{
  "format_version": 1,
  "notice": "Design contracts. Bound stubs are not implemented business behavior. JSON Schema cannot express all cross-field or stored-state obligations.",
  "schema": {
    "source": "packages/core/src/contracts/schema.ts",
    "ontology": "docs/ONTOLOGY.md",
    "relationship": "Each service declares the tables it touches (`tables`); names are checked against this schema by a contract test. Declarations are design obligations, not enforced access."
  },
  "scaffold_mcp": [
    {
      "name": "example_list",
      "readiness": "implemented",
      "operations": [
        "call"
      ]
    },
    {
      "name": "example_create",
      "readiness": "implemented",
      "operations": [
        "call"
      ]
    }
  ],
  "prompts": [
    {
      "name": "coaching_session",
      "title": "Coaching session",
      "description": "Open a flexible coaching session: adapt to goal setup, check-in, review or open coaching within one session.",
      "requiredTools": [
        "session_start",
        "session_close"
      ],
      "available": false
    }
  ],
  "pages": [
    {
      "path": "/terms",
      "title": "Terms",
      "owner": "Scaffold legal-route continuity",
      "implementation": "scaffold",
      "overlays": [],
      "reads": [],
      "writes": [],
      "services": []
    },
    {
      "path": "/privacy",
      "title": "Privacy",
      "owner": "Scaffold legal-route continuity",
      "implementation": "scaffold",
      "overlays": [],
      "reads": [],
      "writes": [],
      "services": []
    },
    {
      "path": "/cookies",
      "title": "Cookies",
      "owner": "Scaffold legal-route continuity",
      "implementation": "scaffold",
      "overlays": [],
      "reads": [],
      "writes": [],
      "services": []
    },
    {
      "path": "/example",
      "title": "Example",
      "owner": "Temporary scaffold reference",
      "implementation": "scaffold",
      "overlays": [],
      "reads": [
        "example.list"
      ],
      "writes": [
        "example.create",
        "example.delete"
      ],
      "services": []
    },
    {
      "path": "/",
      "title": "Objectives",
      "owner": "F3 Objectives",
      "implementation": "pending",
      "overlays": [
        "result-update-dial",
        "note-editor"
      ],
      "reads": [
        "record.query"
      ],
      "writes": [
        "objectives.create"
      ],
      "services": [
        "record.query",
        "objectives.create"
      ]
    },
    {
      "path": "/objectives/:id",
      "title": "Objective",
      "owner": "F3 Objectives",
      "implementation": "pending",
      "overlays": [
        "result-update-dial"
      ],
      "reads": [
        "objectives.get"
      ],
      "writes": [
        "objectives.create",
        "objectives.update",
        "objectives.delete",
        "results.create",
        "actions.create",
        "action_logs.create"
      ],
      "services": [
        "objectives.get",
        "objectives.create",
        "objectives.update",
        "objectives.delete",
        "results.create",
        "actions.create",
        "action_logs.create"
      ]
    },
    {
      "path": "/results/:id",
      "title": "Result",
      "owner": "F4 Results",
      "implementation": "pending",
      "overlays": [
        "result-update-dial"
      ],
      "reads": [
        "results.get",
        "result_logs.list",
        "habit_logs.list"
      ],
      "writes": [
        "results.create",
        "results.update",
        "results.delete",
        "result_logs.create",
        "result_logs.clear_comment",
        "result_logs.delete",
        "habit_logs.set"
      ],
      "services": [
        "results.get",
        "result_logs.list",
        "habit_logs.list",
        "results.create",
        "results.update",
        "results.delete",
        "result_logs.create",
        "result_logs.clear_comment",
        "result_logs.delete",
        "habit_logs.set"
      ]
    },
    {
      "path": "/actions",
      "title": "Actions",
      "owner": "F5 Actions",
      "implementation": "pending",
      "overlays": [],
      "reads": [
        "actions.list"
      ],
      "writes": [
        "actions.create",
        "actions.reorder",
        "action_logs.create"
      ],
      "services": [
        "actions.list",
        "actions.create",
        "actions.reorder",
        "action_logs.create"
      ]
    },
    {
      "path": "/actions/:id",
      "title": "Action",
      "owner": "F5 Actions",
      "implementation": "pending",
      "overlays": [],
      "reads": [
        "actions.get",
        "action_logs.list"
      ],
      "writes": [
        "actions.create",
        "actions.update",
        "actions.delete",
        "action_logs.create",
        "action_logs.clear_comment"
      ],
      "services": [
        "actions.get",
        "action_logs.list",
        "actions.create",
        "actions.update",
        "actions.delete",
        "action_logs.create",
        "action_logs.clear_comment"
      ]
    },
    {
      "path": "/notes",
      "title": "Notes",
      "owner": "F6 Notes",
      "implementation": "pending",
      "overlays": [
        "note-editor"
      ],
      "reads": [
        "notes.list"
      ],
      "writes": [
        "notes.delete"
      ],
      "services": [
        "notes.list",
        "notes.delete"
      ]
    },
    {
      "path": "/notes/:id",
      "title": "Note",
      "owner": "F6 Notes",
      "implementation": "pending",
      "overlays": [],
      "reads": [
        "notes.get"
      ],
      "writes": [
        "notes.update",
        "notes.delete"
      ],
      "services": [
        "notes.get",
        "notes.update",
        "notes.delete"
      ]
    },
    {
      "path": "/sessions",
      "title": "Sessions",
      "owner": "F7 Sessions",
      "implementation": "pending",
      "overlays": [],
      "reads": [
        "sessions.list"
      ],
      "writes": [],
      "services": [
        "sessions.list"
      ]
    },
    {
      "path": "/sessions/:id",
      "title": "Session",
      "owner": "F7 Sessions",
      "implementation": "pending",
      "overlays": [],
      "reads": [
        "sessions.get"
      ],
      "writes": [
        "action_logs.create"
      ],
      "services": [
        "sessions.get",
        "action_logs.create"
      ]
    },
    {
      "path": "/sessions/:id/briefing",
      "title": "Briefing",
      "owner": "F7 Sessions",
      "implementation": "pending",
      "overlays": [],
      "reads": [
        "sessions.get"
      ],
      "writes": [],
      "services": [
        "sessions.get"
      ]
    },
    {
      "path": "/sessions/:id/summary",
      "title": "Session summary",
      "owner": "F7 Sessions",
      "implementation": "pending",
      "overlays": [],
      "reads": [
        "sessions.get"
      ],
      "writes": [],
      "services": [
        "sessions.get"
      ]
    },
    {
      "path": "/cycles",
      "title": "Cycles",
      "owner": "F2 Cycles",
      "implementation": "pending",
      "overlays": [],
      "reads": [
        "cycles.list"
      ],
      "writes": [],
      "services": [
        "cycles.list"
      ]
    },
    {
      "path": "/cycles/new",
      "title": "Set up a cycle",
      "owner": "F2 Cycles",
      "implementation": "pending",
      "overlays": [],
      "reads": [],
      "writes": [
        "cycles.create"
      ],
      "services": [
        "cycles.create"
      ]
    },
    {
      "path": "/cycles/:id",
      "title": "Cycle",
      "owner": "F2 Cycles",
      "implementation": "pending",
      "overlays": [],
      "reads": [
        "cycles.get"
      ],
      "writes": [
        "cycles.update",
        "cycles.delete"
      ],
      "services": [
        "cycles.get",
        "cycles.update",
        "cycles.delete"
      ]
    },
    {
      "path": "/settings",
      "title": "Settings",
      "owner": "F1 Identity and billing",
      "implementation": "pending",
      "overlays": [],
      "reads": [
        "user.get",
        "cycles.resolve_active",
        "billing.get_details"
      ],
      "writes": [
        "user.update",
        "user.delete",
        "billing.create_portal_session",
        "billing.create_checkout_session"
      ],
      "services": [
        "user.get",
        "cycles.resolve_active",
        "billing.get_details",
        "user.update",
        "user.delete",
        "billing.create_portal_session",
        "billing.create_checkout_session"
      ]
    },
    {
      "path": "/onboarding",
      "title": "Set up your coaching",
      "owner": "F1 Identity and billing",
      "implementation": "pending",
      "overlays": [],
      "reads": [
        "user.get"
      ],
      "writes": [
        "billing.create_checkout_session"
      ],
      "services": [
        "user.get",
        "billing.create_checkout_session"
      ]
    },
    {
      "path": "/sign-in",
      "title": "Sign in",
      "owner": "F1 Identity and billing",
      "implementation": "live",
      "overlays": [],
      "reads": [],
      "writes": [],
      "services": []
    },
    {
      "path": "/sign-up",
      "title": "Sign up",
      "owner": "F1 Identity and billing",
      "implementation": "live",
      "overlays": [],
      "reads": [],
      "writes": [],
      "services": []
    },
    {
      "path": "/oauth/consent",
      "title": "Authorize",
      "owner": "F1 Identity and billing",
      "implementation": "live",
      "overlays": [],
      "reads": [],
      "writes": [],
      "services": []
    }
  ],
  "overlays": [
    {
      "name": "result-update-dial",
      "title": "Update Result value",
      "owner": "F4 Results",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "result_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          }
        },
        "required": [
          "result_id"
        ],
        "additionalProperties": false
      },
      "procedures": [
        "results.get",
        "result_logs.create",
        "habit_logs.set"
      ],
      "services": [
        "results.get",
        "result_logs.create",
        "habit_logs.set"
      ],
      "opened_by": [
        "/",
        "/objectives/:id",
        "/results/:id"
      ]
    },
    {
      "name": "note-editor",
      "title": "Capture or edit a note",
      "owner": "F6 Notes",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "const": "create"
              }
            },
            "required": [
              "mode"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "const": "edit"
              },
              "note_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              }
            },
            "required": [
              "mode",
              "note_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "procedures": [
        "notes.get",
        "notes.create",
        "notes.update",
        "notes.delete"
      ],
      "services": [
        "notes.get",
        "notes.create",
        "notes.update",
        "notes.delete"
      ],
      "opened_by": [
        "/",
        "/notes"
      ]
    }
  ],
  "widgets": [
    {
      "id": "progress",
      "title": "Progress",
      "owner": "F3 Objectives",
      "kind": "product",
      "pages": [
        "/"
      ],
      "resource_uri": "ui://widget/progress.v1.html",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "as_of": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "description": "Server snapshot time for the stale-snapshot footer."
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "as_of": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "boundary": {
                    "type": "object",
                    "properties": {
                      "at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "session_id": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "source": {
                        "type": "string",
                        "enum": [
                          "session",
                          "cycle_start",
                          "none"
                        ]
                      }
                    },
                    "required": [
                      "at",
                      "session_id",
                      "source"
                    ],
                    "additionalProperties": false
                  },
                  "cycle": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "intention": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                          },
                          "start_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Starts."
                          },
                          "end_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Ends."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "archived"
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "achievement_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                          },
                          "time_gone_pct": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100,
                            "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                          },
                          "length_weeks": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991,
                            "description": "UI label: Length, in weeks; derived from Starts and Ends."
                          }
                        },
                        "required": [
                          "id",
                          "intention",
                          "start_at",
                          "end_at",
                          "status",
                          "created_at",
                          "url",
                          "achievement_pct",
                          "time_gone_pct",
                          "length_weeks"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "cycle_line": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "range": {
                            "type": "string"
                          },
                          "time_gone_pct": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100
                          }
                        },
                        "required": [
                          "range",
                          "time_gone_pct"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "objectives": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "cycle_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "deadline_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Deadline; null when no deadline has been set."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "on_track",
                                "off_track",
                                "completed"
                              ],
                              "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Progress. Derived from measurable results, independently of Status."
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Historical progress at the resolved last-session boundary; not current Progress."
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "cycle_id",
                            "title",
                            "description",
                            "deadline_at",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement_pp"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "results": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "oneOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "metric_type": {
                                  "type": "string",
                                  "const": "number"
                                },
                                "start_value": {
                                  "type": "number"
                                },
                                "target_value": {
                                  "type": "number"
                                },
                                "unit": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Unit. Used by Number and Performance results."
                                },
                                "cadence": {
                                  "type": "null"
                                },
                                "per": {
                                  "type": "null"
                                },
                                "since": {
                                  "type": "null"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "in_progress",
                                    "completed"
                                  ],
                                  "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "current_value": {
                                  "type": "number",
                                  "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                },
                                "boundary_value": {
                                  "type": "number"
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "evidence_count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "last_recorded_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_expected_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_logs_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "performance_share": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "objective_id",
                                "title",
                                "description",
                                "metric_type",
                                "start_value",
                                "target_value",
                                "unit",
                                "cadence",
                                "per",
                                "since",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "current_value",
                                "boundary_value",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement",
                                "movement_pp",
                                "evidence_count",
                                "last_recorded_at",
                                "habit_expected_since_boundary",
                                "habit_logs_since_boundary",
                                "performance_share"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "metric_type": {
                                  "type": "string",
                                  "const": "percentage"
                                },
                                "start_value": {
                                  "type": "number",
                                  "minimum": 0,
                                  "maximum": 100
                                },
                                "target_value": {
                                  "type": "number",
                                  "minimum": 0,
                                  "maximum": 100
                                },
                                "unit": {
                                  "type": "null"
                                },
                                "cadence": {
                                  "type": "null"
                                },
                                "per": {
                                  "type": "null"
                                },
                                "since": {
                                  "type": "null"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "in_progress",
                                    "completed"
                                  ],
                                  "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "current_value": {
                                  "type": "number",
                                  "minimum": 0,
                                  "maximum": 100
                                },
                                "boundary_value": {
                                  "type": "number",
                                  "minimum": 0,
                                  "maximum": 100
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "evidence_count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "last_recorded_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_expected_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_logs_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "performance_share": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "objective_id",
                                "title",
                                "description",
                                "metric_type",
                                "start_value",
                                "target_value",
                                "unit",
                                "cadence",
                                "per",
                                "since",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "current_value",
                                "boundary_value",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement",
                                "movement_pp",
                                "evidence_count",
                                "last_recorded_at",
                                "habit_expected_since_boundary",
                                "habit_logs_since_boundary",
                                "performance_share"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "metric_type": {
                                  "type": "string",
                                  "const": "milestone"
                                },
                                "start_value": {
                                  "type": "number",
                                  "const": 0
                                },
                                "target_value": {
                                  "type": "number",
                                  "const": 1
                                },
                                "unit": {
                                  "type": "null"
                                },
                                "cadence": {
                                  "type": "null"
                                },
                                "per": {
                                  "type": "null"
                                },
                                "since": {
                                  "type": "null"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "in_progress",
                                    "completed"
                                  ],
                                  "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "current_value": {
                                  "anyOf": [
                                    {
                                      "type": "number",
                                      "const": 0
                                    },
                                    {
                                      "type": "number",
                                      "const": 1
                                    }
                                  ]
                                },
                                "boundary_value": {
                                  "anyOf": [
                                    {
                                      "type": "number",
                                      "const": 0
                                    },
                                    {
                                      "type": "number",
                                      "const": 1
                                    }
                                  ]
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "evidence_count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "last_recorded_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_expected_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_logs_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "performance_share": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "objective_id",
                                "title",
                                "description",
                                "metric_type",
                                "start_value",
                                "target_value",
                                "unit",
                                "cadence",
                                "per",
                                "since",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "current_value",
                                "boundary_value",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement",
                                "movement_pp",
                                "evidence_count",
                                "last_recorded_at",
                                "habit_expected_since_boundary",
                                "habit_logs_since_boundary",
                                "performance_share"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "metric_type": {
                                  "type": "string",
                                  "const": "habit"
                                },
                                "start_value": {
                                  "type": "number",
                                  "const": 0
                                },
                                "target_value": {
                                  "type": "number",
                                  "const": 100
                                },
                                "unit": {
                                  "type": "null"
                                },
                                "cadence": {
                                  "type": "string",
                                  "enum": [
                                    "weekly",
                                    "monthly"
                                  ],
                                  "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                },
                                "per": {
                                  "type": "integer",
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "since": {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "in_progress",
                                    "completed"
                                  ],
                                  "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "current_value": {
                                  "type": "number",
                                  "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                },
                                "boundary_value": {
                                  "type": "number"
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "evidence_count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "last_recorded_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_expected_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_logs_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "performance_share": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "objective_id",
                                "title",
                                "description",
                                "metric_type",
                                "start_value",
                                "target_value",
                                "unit",
                                "cadence",
                                "per",
                                "since",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "current_value",
                                "boundary_value",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement",
                                "movement_pp",
                                "evidence_count",
                                "last_recorded_at",
                                "habit_expected_since_boundary",
                                "habit_logs_since_boundary",
                                "performance_share"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "metric_type": {
                                  "type": "string",
                                  "const": "performance"
                                },
                                "start_value": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                },
                                "target_value": {
                                  "type": "number"
                                },
                                "unit": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Unit. Used by Number and Performance results."
                                },
                                "cadence": {
                                  "type": "null"
                                },
                                "per": {
                                  "type": "null"
                                },
                                "since": {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "in_progress",
                                    "completed"
                                  ],
                                  "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "current_value": {
                                  "type": "number",
                                  "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                },
                                "boundary_value": {
                                  "type": "number"
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "evidence_count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "last_recorded_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_expected_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_logs_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "performance_share": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "objective_id",
                                "title",
                                "description",
                                "metric_type",
                                "start_value",
                                "target_value",
                                "unit",
                                "cadence",
                                "per",
                                "since",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "current_value",
                                "boundary_value",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement",
                                "movement_pp",
                                "evidence_count",
                                "last_recorded_at",
                                "habit_expected_since_boundary",
                                "habit_logs_since_boundary",
                                "performance_share"
                              ],
                              "additionalProperties": false
                            }
                          ]
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "continuations": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string",
                      "enum": [
                        "cycles",
                        "objectives",
                        "results",
                        "actions",
                        "notes",
                        "sessions",
                        "result_logs",
                        "habit_logs",
                        "action_logs",
                        "trend"
                      ]
                    },
                    "additionalProperties": {
                      "type": "string",
                      "minLength": 1
                    }
                  }
                },
                "required": [
                  "as_of",
                  "boundary",
                  "cycle",
                  "cycle_line",
                  "objectives",
                  "results",
                  "continuations"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "totals": {
            "type": "object",
            "properties": {
              "objectives": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "results": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "objectives",
              "results"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "as_of",
          "data",
          "totals"
        ],
        "additionalProperties": false
      },
      "readiness": "contract-only",
      "binding": "planned",
      "gap": "Project the active briefing into the dashboard payload; no coaching card for unpaid access.",
      "sources": [
        {
          "tool": "session_start",
          "operations": [
            "call"
          ],
          "when": "Active access only; render the current cycle and objectives/results snapshot.",
          "services": [
            "sessions.start"
          ]
        }
      ]
    },
    {
      "id": "objective",
      "title": "Objective",
      "owner": "F3 Objectives",
      "kind": "product",
      "pages": [
        "/objectives/:id"
      ],
      "resource_uri": "ui://widget/objective.v1.html",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "as_of": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "description": "Server snapshot time for the stale-snapshot footer."
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "objective": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "cycle_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "deadline_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Deadline; null when no deadline has been set."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "on_track",
                          "off_track",
                          "completed"
                        ],
                        "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Progress. Derived from measurable results, independently of Status."
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Historical progress at the resolved last-session boundary; not current Progress."
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "cycle_id",
                      "title",
                      "description",
                      "deadline_at",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement_pp"
                    ],
                    "additionalProperties": false
                  },
                  "cycle": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "intention": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                      },
                      "start_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Starts."
                      },
                      "end_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Ends."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "active",
                          "archived"
                        ]
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "achievement_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                      },
                      "time_gone_pct": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100,
                        "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                      },
                      "length_weeks": {
                        "type": "integer",
                        "minimum": -9007199254740991,
                        "maximum": 9007199254740991,
                        "description": "UI label: Length, in weeks; derived from Starts and Ends."
                      }
                    },
                    "required": [
                      "id",
                      "intention",
                      "start_at",
                      "end_at",
                      "status",
                      "created_at",
                      "url",
                      "achievement_pct",
                      "time_gone_pct",
                      "length_weeks"
                    ],
                    "additionalProperties": false
                  },
                  "results": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "oneOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "metric_type": {
                                  "type": "string",
                                  "const": "number"
                                },
                                "start_value": {
                                  "type": "number"
                                },
                                "target_value": {
                                  "type": "number"
                                },
                                "unit": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Unit. Used by Number and Performance results."
                                },
                                "cadence": {
                                  "type": "null"
                                },
                                "per": {
                                  "type": "null"
                                },
                                "since": {
                                  "type": "null"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "in_progress",
                                    "completed"
                                  ],
                                  "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "current_value": {
                                  "type": "number",
                                  "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                },
                                "boundary_value": {
                                  "type": "number"
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "evidence_count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "last_recorded_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_expected_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_logs_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "performance_share": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "objective_id",
                                "title",
                                "description",
                                "metric_type",
                                "start_value",
                                "target_value",
                                "unit",
                                "cadence",
                                "per",
                                "since",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "current_value",
                                "boundary_value",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement",
                                "movement_pp",
                                "evidence_count",
                                "last_recorded_at",
                                "habit_expected_since_boundary",
                                "habit_logs_since_boundary",
                                "performance_share"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "metric_type": {
                                  "type": "string",
                                  "const": "percentage"
                                },
                                "start_value": {
                                  "type": "number",
                                  "minimum": 0,
                                  "maximum": 100
                                },
                                "target_value": {
                                  "type": "number",
                                  "minimum": 0,
                                  "maximum": 100
                                },
                                "unit": {
                                  "type": "null"
                                },
                                "cadence": {
                                  "type": "null"
                                },
                                "per": {
                                  "type": "null"
                                },
                                "since": {
                                  "type": "null"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "in_progress",
                                    "completed"
                                  ],
                                  "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "current_value": {
                                  "type": "number",
                                  "minimum": 0,
                                  "maximum": 100
                                },
                                "boundary_value": {
                                  "type": "number",
                                  "minimum": 0,
                                  "maximum": 100
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "evidence_count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "last_recorded_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_expected_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_logs_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "performance_share": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "objective_id",
                                "title",
                                "description",
                                "metric_type",
                                "start_value",
                                "target_value",
                                "unit",
                                "cadence",
                                "per",
                                "since",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "current_value",
                                "boundary_value",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement",
                                "movement_pp",
                                "evidence_count",
                                "last_recorded_at",
                                "habit_expected_since_boundary",
                                "habit_logs_since_boundary",
                                "performance_share"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "metric_type": {
                                  "type": "string",
                                  "const": "milestone"
                                },
                                "start_value": {
                                  "type": "number",
                                  "const": 0
                                },
                                "target_value": {
                                  "type": "number",
                                  "const": 1
                                },
                                "unit": {
                                  "type": "null"
                                },
                                "cadence": {
                                  "type": "null"
                                },
                                "per": {
                                  "type": "null"
                                },
                                "since": {
                                  "type": "null"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "in_progress",
                                    "completed"
                                  ],
                                  "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "current_value": {
                                  "anyOf": [
                                    {
                                      "type": "number",
                                      "const": 0
                                    },
                                    {
                                      "type": "number",
                                      "const": 1
                                    }
                                  ]
                                },
                                "boundary_value": {
                                  "anyOf": [
                                    {
                                      "type": "number",
                                      "const": 0
                                    },
                                    {
                                      "type": "number",
                                      "const": 1
                                    }
                                  ]
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "evidence_count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "last_recorded_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_expected_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_logs_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "performance_share": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "objective_id",
                                "title",
                                "description",
                                "metric_type",
                                "start_value",
                                "target_value",
                                "unit",
                                "cadence",
                                "per",
                                "since",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "current_value",
                                "boundary_value",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement",
                                "movement_pp",
                                "evidence_count",
                                "last_recorded_at",
                                "habit_expected_since_boundary",
                                "habit_logs_since_boundary",
                                "performance_share"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "metric_type": {
                                  "type": "string",
                                  "const": "habit"
                                },
                                "start_value": {
                                  "type": "number",
                                  "const": 0
                                },
                                "target_value": {
                                  "type": "number",
                                  "const": 100
                                },
                                "unit": {
                                  "type": "null"
                                },
                                "cadence": {
                                  "type": "string",
                                  "enum": [
                                    "weekly",
                                    "monthly"
                                  ],
                                  "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                },
                                "per": {
                                  "type": "integer",
                                  "exclusiveMinimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "since": {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "in_progress",
                                    "completed"
                                  ],
                                  "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "current_value": {
                                  "type": "number",
                                  "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                },
                                "boundary_value": {
                                  "type": "number"
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "evidence_count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "last_recorded_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_expected_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_logs_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "performance_share": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "objective_id",
                                "title",
                                "description",
                                "metric_type",
                                "start_value",
                                "target_value",
                                "unit",
                                "cadence",
                                "per",
                                "since",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "current_value",
                                "boundary_value",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement",
                                "movement_pp",
                                "evidence_count",
                                "last_recorded_at",
                                "habit_expected_since_boundary",
                                "habit_logs_since_boundary",
                                "performance_share"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "metric_type": {
                                  "type": "string",
                                  "const": "performance"
                                },
                                "start_value": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                },
                                "target_value": {
                                  "type": "number"
                                },
                                "unit": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Unit. Used by Number and Performance results."
                                },
                                "cadence": {
                                  "type": "null"
                                },
                                "per": {
                                  "type": "null"
                                },
                                "since": {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "in_progress",
                                    "completed"
                                  ],
                                  "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "current_value": {
                                  "type": "number",
                                  "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                },
                                "boundary_value": {
                                  "type": "number"
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "evidence_count": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                "last_recorded_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_expected_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "habit_logs_since_boundary": {
                                  "anyOf": [
                                    {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "performance_share": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "objective_id",
                                "title",
                                "description",
                                "metric_type",
                                "start_value",
                                "target_value",
                                "unit",
                                "cadence",
                                "per",
                                "since",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "current_value",
                                "boundary_value",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement",
                                "movement_pp",
                                "evidence_count",
                                "last_recorded_at",
                                "habit_expected_since_boundary",
                                "habit_logs_since_boundary",
                                "performance_share"
                              ],
                              "additionalProperties": false
                            }
                          ]
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "actions": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "cycle_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "due_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "open",
                                "in_progress",
                                "done"
                              ],
                              "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                            },
                            "sort_order": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Drag order within an action group; not a progress status."
                            },
                            "session_id": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "overdue": {
                              "type": "boolean"
                            },
                            "done_since_boundary": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "id",
                            "cycle_id",
                            "objective_id",
                            "title",
                            "description",
                            "due_at",
                            "status",
                            "sort_order",
                            "session_id",
                            "created_at",
                            "url",
                            "overdue",
                            "done_since_boundary"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "continuations": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string",
                      "enum": [
                        "cycles",
                        "objectives",
                        "results",
                        "actions",
                        "notes",
                        "sessions",
                        "result_logs",
                        "habit_logs",
                        "action_logs",
                        "trend"
                      ]
                    },
                    "additionalProperties": {
                      "type": "string",
                      "minLength": 1
                    }
                  }
                },
                "required": [
                  "objective",
                  "cycle",
                  "results",
                  "actions",
                  "continuations"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "totals": {
            "type": "object",
            "properties": {
              "results": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "actions": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "results",
              "actions"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "as_of",
          "data",
          "totals"
        ],
        "additionalProperties": false
      },
      "readiness": "contract-only",
      "binding": "planned",
      "gap": "Compact MCP records omit cycle, results and actions required by the page-mirroring payload.",
      "sources": [
        {
          "tool": "objective_read",
          "operations": [
            "get"
          ],
          "when": "get for an existing objective.",
          "services": [
            "objectives.get"
          ]
        },
        {
          "tool": "objective_write",
          "operations": [
            "create",
            "update"
          ],
          "when": "Successful create/update.",
          "services": [
            "objectives.create",
            "objectives.update"
          ]
        }
      ]
    },
    {
      "id": "result",
      "title": "Result",
      "owner": "F4 Results",
      "kind": "product",
      "pages": [
        "/results/:id"
      ],
      "resource_uri": "ui://widget/result.v1.html",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "as_of": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "description": "Server snapshot time for the stale-snapshot footer."
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "result": {
                    "oneOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "objective_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "metric_type": {
                            "type": "string",
                            "const": "number"
                          },
                          "start_value": {
                            "type": "number"
                          },
                          "target_value": {
                            "type": "number"
                          },
                          "unit": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Unit. Used by Number and Performance results."
                          },
                          "cadence": {
                            "type": "null"
                          },
                          "per": {
                            "type": "null"
                          },
                          "since": {
                            "type": "null"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "in_progress",
                              "completed"
                            ],
                            "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "short_code": {
                            "type": "string",
                            "minLength": 1
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "current_value": {
                            "type": "number",
                            "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                          },
                          "boundary_value": {
                            "type": "number"
                          },
                          "progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "boundary_progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "movement": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "movement_pp": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "evidence_count": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "last_recorded_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "habit_expected_since_boundary": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "habit_logs_since_boundary": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "performance_share": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "objective_id",
                          "title",
                          "description",
                          "metric_type",
                          "start_value",
                          "target_value",
                          "unit",
                          "cadence",
                          "per",
                          "since",
                          "status",
                          "created_at",
                          "short_code",
                          "url",
                          "current_value",
                          "boundary_value",
                          "progress_pct",
                          "boundary_progress_pct",
                          "movement",
                          "movement_pp",
                          "evidence_count",
                          "last_recorded_at",
                          "habit_expected_since_boundary",
                          "habit_logs_since_boundary",
                          "performance_share"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "objective_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "metric_type": {
                            "type": "string",
                            "const": "percentage"
                          },
                          "start_value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100
                          },
                          "target_value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100
                          },
                          "unit": {
                            "type": "null"
                          },
                          "cadence": {
                            "type": "null"
                          },
                          "per": {
                            "type": "null"
                          },
                          "since": {
                            "type": "null"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "in_progress",
                              "completed"
                            ],
                            "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "short_code": {
                            "type": "string",
                            "minLength": 1
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "current_value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100
                          },
                          "boundary_value": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100
                          },
                          "progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "boundary_progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "movement": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "movement_pp": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "evidence_count": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "last_recorded_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "habit_expected_since_boundary": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "habit_logs_since_boundary": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "performance_share": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "objective_id",
                          "title",
                          "description",
                          "metric_type",
                          "start_value",
                          "target_value",
                          "unit",
                          "cadence",
                          "per",
                          "since",
                          "status",
                          "created_at",
                          "short_code",
                          "url",
                          "current_value",
                          "boundary_value",
                          "progress_pct",
                          "boundary_progress_pct",
                          "movement",
                          "movement_pp",
                          "evidence_count",
                          "last_recorded_at",
                          "habit_expected_since_boundary",
                          "habit_logs_since_boundary",
                          "performance_share"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "objective_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "metric_type": {
                            "type": "string",
                            "const": "milestone"
                          },
                          "start_value": {
                            "type": "number",
                            "const": 0
                          },
                          "target_value": {
                            "type": "number",
                            "const": 1
                          },
                          "unit": {
                            "type": "null"
                          },
                          "cadence": {
                            "type": "null"
                          },
                          "per": {
                            "type": "null"
                          },
                          "since": {
                            "type": "null"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "in_progress",
                              "completed"
                            ],
                            "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "short_code": {
                            "type": "string",
                            "minLength": 1
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "current_value": {
                            "anyOf": [
                              {
                                "type": "number",
                                "const": 0
                              },
                              {
                                "type": "number",
                                "const": 1
                              }
                            ]
                          },
                          "boundary_value": {
                            "anyOf": [
                              {
                                "type": "number",
                                "const": 0
                              },
                              {
                                "type": "number",
                                "const": 1
                              }
                            ]
                          },
                          "progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "boundary_progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "movement": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "movement_pp": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "evidence_count": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "last_recorded_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "habit_expected_since_boundary": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "habit_logs_since_boundary": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "performance_share": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "objective_id",
                          "title",
                          "description",
                          "metric_type",
                          "start_value",
                          "target_value",
                          "unit",
                          "cadence",
                          "per",
                          "since",
                          "status",
                          "created_at",
                          "short_code",
                          "url",
                          "current_value",
                          "boundary_value",
                          "progress_pct",
                          "boundary_progress_pct",
                          "movement",
                          "movement_pp",
                          "evidence_count",
                          "last_recorded_at",
                          "habit_expected_since_boundary",
                          "habit_logs_since_boundary",
                          "performance_share"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "objective_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "metric_type": {
                            "type": "string",
                            "const": "habit"
                          },
                          "start_value": {
                            "type": "number",
                            "const": 0
                          },
                          "target_value": {
                            "type": "number",
                            "const": 100
                          },
                          "unit": {
                            "type": "null"
                          },
                          "cadence": {
                            "type": "string",
                            "enum": [
                              "weekly",
                              "monthly"
                            ],
                            "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                          },
                          "per": {
                            "type": "integer",
                            "exclusiveMinimum": 0,
                            "maximum": 9007199254740991
                          },
                          "since": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "in_progress",
                              "completed"
                            ],
                            "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "short_code": {
                            "type": "string",
                            "minLength": 1
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "current_value": {
                            "type": "number",
                            "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                          },
                          "boundary_value": {
                            "type": "number"
                          },
                          "progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "boundary_progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "movement": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "movement_pp": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "evidence_count": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "last_recorded_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "habit_expected_since_boundary": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "habit_logs_since_boundary": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "performance_share": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "objective_id",
                          "title",
                          "description",
                          "metric_type",
                          "start_value",
                          "target_value",
                          "unit",
                          "cadence",
                          "per",
                          "since",
                          "status",
                          "created_at",
                          "short_code",
                          "url",
                          "current_value",
                          "boundary_value",
                          "progress_pct",
                          "boundary_progress_pct",
                          "movement",
                          "movement_pp",
                          "evidence_count",
                          "last_recorded_at",
                          "habit_expected_since_boundary",
                          "habit_logs_since_boundary",
                          "performance_share"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "objective_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "metric_type": {
                            "type": "string",
                            "const": "performance"
                          },
                          "start_value": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                          },
                          "target_value": {
                            "type": "number"
                          },
                          "unit": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Unit. Used by Number and Performance results."
                          },
                          "cadence": {
                            "type": "null"
                          },
                          "per": {
                            "type": "null"
                          },
                          "since": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "in_progress",
                              "completed"
                            ],
                            "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "short_code": {
                            "type": "string",
                            "minLength": 1
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "current_value": {
                            "type": "number",
                            "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                          },
                          "boundary_value": {
                            "type": "number"
                          },
                          "progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "boundary_progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "movement": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "movement_pp": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "evidence_count": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "last_recorded_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "habit_expected_since_boundary": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "habit_logs_since_boundary": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "performance_share": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "objective_id",
                          "title",
                          "description",
                          "metric_type",
                          "start_value",
                          "target_value",
                          "unit",
                          "cadence",
                          "per",
                          "since",
                          "status",
                          "created_at",
                          "short_code",
                          "url",
                          "current_value",
                          "boundary_value",
                          "progress_pct",
                          "boundary_progress_pct",
                          "movement",
                          "movement_pp",
                          "evidence_count",
                          "last_recorded_at",
                          "habit_expected_since_boundary",
                          "habit_logs_since_boundary",
                          "performance_share"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  "parents": {
                    "type": "object",
                    "properties": {
                      "cycle": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "intention": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                              },
                              "start_at": {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "UI label: Starts."
                              },
                              "end_at": {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "UI label: Ends."
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "active",
                                  "archived"
                                ]
                              },
                              "created_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "achievement_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                              },
                              "time_gone_pct": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 100,
                                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                              },
                              "length_weeks": {
                                "type": "integer",
                                "minimum": -9007199254740991,
                                "maximum": 9007199254740991,
                                "description": "UI label: Length, in weeks; derived from Starts and Ends."
                              }
                            },
                            "required": [
                              "id",
                              "intention",
                              "start_at",
                              "end_at",
                              "status",
                              "created_at",
                              "url",
                              "achievement_pct",
                              "time_gone_pct",
                              "length_weeks"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "objectives": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "cycle_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "deadline_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Deadline; null when no deadline has been set."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "on_track",
                                    "off_track",
                                    "completed"
                                  ],
                                  "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Progress. Derived from measurable results, independently of Status."
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "Historical progress at the resolved last-session boundary; not current Progress."
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "cycle_id",
                                "title",
                                "description",
                                "deadline_at",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement_pp"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "cycle",
                      "objectives"
                    ],
                    "additionalProperties": false
                  },
                  "result_logs": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 100,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "result_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "value": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "comment": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "session_id": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "recorded_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            }
                          },
                          "required": [
                            "id",
                            "result_id",
                            "value",
                            "comment",
                            "session_id",
                            "recorded_at"
                          ],
                          "additionalProperties": false,
                          "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "habit_logs": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 100,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "result_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "day": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "session_id": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            }
                          },
                          "required": [
                            "id",
                            "result_id",
                            "day",
                            "session_id",
                            "created_at"
                          ],
                          "additionalProperties": false,
                          "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "trend": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 100,
                        "type": "array",
                        "items": {
                          "oneOf": [
                            {
                              "type": "object",
                              "properties": {
                                "kind": {
                                  "type": "string",
                                  "const": "value"
                                },
                                "at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "value": {
                                  "type": "number"
                                },
                                "pace": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "kind",
                                "at",
                                "value",
                                "pace"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "kind": {
                                  "type": "string",
                                  "const": "habit"
                                },
                                "from": {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                "to": {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                "actual": {
                                  "type": "integer",
                                  "minimum": -9007199254740991,
                                  "maximum": 9007199254740991
                                },
                                "expected": {
                                  "type": "number"
                                },
                                "expected_full": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "kind",
                                "from",
                                "to",
                                "actual",
                                "expected",
                                "expected_full"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "object",
                              "properties": {
                                "kind": {
                                  "type": "string",
                                  "const": "performance"
                                },
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "value": {
                                  "type": "number"
                                },
                                "target": {
                                  "type": "number"
                                },
                                "gap": {
                                  "type": "number"
                                },
                                "share": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "kind",
                                "id",
                                "at",
                                "value",
                                "target",
                                "gap",
                                "share"
                              ],
                              "additionalProperties": false
                            }
                          ]
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "continuations": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string",
                      "enum": [
                        "cycles",
                        "objectives",
                        "results",
                        "actions",
                        "notes",
                        "sessions",
                        "result_logs",
                        "habit_logs",
                        "action_logs",
                        "trend"
                      ]
                    },
                    "additionalProperties": {
                      "type": "string",
                      "minLength": 1
                    }
                  }
                },
                "required": [
                  "result",
                  "parents",
                  "result_logs",
                  "habit_logs",
                  "trend",
                  "continuations"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "totals": {
            "type": "object",
            "properties": {
              "objectives": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "result_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "habit_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "trend": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "objectives",
              "result_logs",
              "habit_logs",
              "trend"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "as_of",
          "data",
          "totals"
        ],
        "additionalProperties": false
      },
      "readiness": "contract-only",
      "binding": "planned",
      "gap": "Supply bounded parent figures, trend and evidence alongside the compact MCP result.",
      "sources": [
        {
          "tool": "result_read",
          "operations": [
            "get"
          ],
          "when": "get for an existing result.",
          "services": [
            "results.get"
          ]
        },
        {
          "tool": "result_write",
          "operations": [
            "create",
            "update"
          ],
          "when": "Successful create/update.",
          "services": [
            "results.create",
            "results.update"
          ]
        },
        {
          "tool": "progress_record",
          "operations": [
            "result",
            "habit"
          ],
          "when": "Successful result or habit evidence entry.",
          "services": [
            "result_logs.create",
            "habit_logs.set"
          ]
        }
      ]
    },
    {
      "id": "due_actions",
      "title": "Due actions",
      "owner": "F5 Actions",
      "kind": "product",
      "pages": [
        "/actions"
      ],
      "resource_uri": "ui://widget/due-actions.v1.html",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "as_of": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "description": "Server snapshot time for the stale-snapshot footer."
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "cycle": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "intention": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                          },
                          "start_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Starts."
                          },
                          "end_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Ends."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "archived"
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "achievement_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                          },
                          "time_gone_pct": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100,
                            "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                          },
                          "length_weeks": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991,
                            "description": "UI label: Length, in weeks; derived from Starts and Ends."
                          }
                        },
                        "required": [
                          "id",
                          "intention",
                          "start_at",
                          "end_at",
                          "status",
                          "created_at",
                          "url",
                          "achievement_pct",
                          "time_gone_pct",
                          "length_weeks"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "cycle_line": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "range": {
                            "type": "string"
                          },
                          "time_gone_pct": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100
                          }
                        },
                        "required": [
                          "range",
                          "time_gone_pct"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "objectives": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "cycle_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "deadline_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Deadline; null when no deadline has been set."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "on_track",
                                "off_track",
                                "completed"
                              ],
                              "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Progress. Derived from measurable results, independently of Status."
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Historical progress at the resolved last-session boundary; not current Progress."
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "cycle_id",
                            "title",
                            "description",
                            "deadline_at",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement_pp"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "actions": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "cycle_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "due_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "open",
                                "in_progress",
                                "done"
                              ],
                              "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                            },
                            "sort_order": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Drag order within an action group; not a progress status."
                            },
                            "session_id": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "overdue": {
                              "type": "boolean"
                            },
                            "done_since_boundary": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "id",
                            "cycle_id",
                            "objective_id",
                            "title",
                            "description",
                            "due_at",
                            "status",
                            "sort_order",
                            "session_id",
                            "created_at",
                            "url",
                            "overdue",
                            "done_since_boundary"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "continuations": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string",
                      "enum": [
                        "cycles",
                        "objectives",
                        "results",
                        "actions",
                        "notes",
                        "sessions",
                        "result_logs",
                        "habit_logs",
                        "action_logs",
                        "trend"
                      ]
                    },
                    "additionalProperties": {
                      "type": "string",
                      "minLength": 1
                    }
                  }
                },
                "required": [
                  "cycle",
                  "cycle_line",
                  "objectives",
                  "actions",
                  "continuations"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "totals": {
            "type": "object",
            "properties": {
              "objectives": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "actions": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "objectives",
              "actions"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "as_of",
          "data",
          "totals"
        ],
        "additionalProperties": false
      },
      "readiness": "contract-only",
      "binding": "planned",
      "gap": "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient.",
      "sources": [
        {
          "tool": "action_read",
          "operations": [
            "list"
          ],
          "when": "list; open actions grouped by objective in stored order.",
          "services": [
            "actions.list"
          ]
        },
        {
          "tool": "action_write",
          "operations": [
            "create",
            "update"
          ],
          "when": "Successful create/update; refreshed open-action snapshot.",
          "services": [
            "actions.create",
            "actions.update"
          ]
        },
        {
          "tool": "action_delete",
          "operations": [
            "commit"
          ],
          "when": "Successful commit; remaining open actions only, never the deleted record.",
          "services": [
            "actions.delete"
          ]
        },
        {
          "tool": "progress_record",
          "operations": [
            "action"
          ],
          "when": "Successful action evidence entry; refreshed open-action snapshot.",
          "services": [
            "action_logs.create"
          ]
        }
      ]
    },
    {
      "id": "action",
      "title": "Action",
      "owner": "F5 Actions",
      "kind": "product",
      "pages": [
        "/actions/:id"
      ],
      "resource_uri": "ui://widget/action.v1.html",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "as_of": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "description": "Server snapshot time for the stale-snapshot footer."
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "action": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "cycle_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "due_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "open",
                          "in_progress",
                          "done"
                        ],
                        "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                      },
                      "sort_order": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Drag order within an action group; not a progress status."
                      },
                      "session_id": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "overdue": {
                        "type": "boolean"
                      },
                      "done_since_boundary": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "id",
                      "cycle_id",
                      "objective_id",
                      "title",
                      "description",
                      "due_at",
                      "status",
                      "sort_order",
                      "session_id",
                      "created_at",
                      "url",
                      "overdue",
                      "done_since_boundary"
                    ],
                    "additionalProperties": false
                  },
                  "cycle": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "intention": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                      },
                      "start_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Starts."
                      },
                      "end_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Ends."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "active",
                          "archived"
                        ]
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "achievement_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                      },
                      "time_gone_pct": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100,
                        "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                      },
                      "length_weeks": {
                        "type": "integer",
                        "minimum": -9007199254740991,
                        "maximum": 9007199254740991,
                        "description": "UI label: Length, in weeks; derived from Starts and Ends."
                      }
                    },
                    "required": [
                      "id",
                      "intention",
                      "start_at",
                      "end_at",
                      "status",
                      "created_at",
                      "url",
                      "achievement_pct",
                      "time_gone_pct",
                      "length_weeks"
                    ],
                    "additionalProperties": false
                  },
                  "objective": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "cycle_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "deadline_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Deadline; null when no deadline has been set."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "on_track",
                              "off_track",
                              "completed"
                            ],
                            "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "short_code": {
                            "type": "string",
                            "minLength": 1
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Progress. Derived from measurable results, independently of Status."
                          },
                          "boundary_progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Historical progress at the resolved last-session boundary; not current Progress."
                          },
                          "movement_pp": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "cycle_id",
                          "title",
                          "description",
                          "deadline_at",
                          "status",
                          "created_at",
                          "short_code",
                          "url",
                          "progress_pct",
                          "boundary_progress_pct",
                          "movement_pp"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "source_session": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "vendor": {
                            "type": "string",
                            "enum": [
                              "claude",
                              "openai"
                            ],
                            "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                          },
                          "source_url": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uri"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "External conversation link used by Open the conversation. Not the app detail URL."
                          },
                          "type": {
                            "anyOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "goal_setup",
                                  "check_in",
                                  "review",
                                  "open_coaching"
                                ],
                                "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "briefing_notes": {
                            "type": "string",
                            "description": "UI document: Briefing. Server-prepared coaching context."
                          },
                          "headline": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "One-line coaching-session summary used in session lists."
                          },
                          "summary_notes": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI document: Summary. Saved when the coaching session closes."
                          },
                          "started_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "ended_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                          },
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Internal app link to coaching session details; distinct from source_url."
                          },
                          "duration_minutes": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "actions_created": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "actions_reviewed": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "id",
                          "vendor",
                          "source_url",
                          "type",
                          "briefing_notes",
                          "headline",
                          "summary_notes",
                          "started_at",
                          "ended_at",
                          "url",
                          "duration_minutes",
                          "actions_created",
                          "actions_reviewed"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "action_logs": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 100,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "action_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "open",
                                "in_progress",
                                "done"
                              ],
                              "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                            },
                            "comment": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "session_id": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "recorded_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            }
                          },
                          "required": [
                            "id",
                            "action_id",
                            "status",
                            "comment",
                            "session_id",
                            "recorded_at"
                          ],
                          "additionalProperties": false,
                          "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "continuations": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string",
                      "enum": [
                        "cycles",
                        "objectives",
                        "results",
                        "actions",
                        "notes",
                        "sessions",
                        "result_logs",
                        "habit_logs",
                        "action_logs",
                        "trend"
                      ]
                    },
                    "additionalProperties": {
                      "type": "string",
                      "minLength": 1
                    }
                  }
                },
                "required": [
                  "action",
                  "cycle",
                  "objective",
                  "source_session",
                  "action_logs",
                  "continuations"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "totals": {
            "type": "object",
            "properties": {
              "action_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "action_logs"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "as_of",
          "data",
          "totals"
        ],
        "additionalProperties": false
      },
      "readiness": "contract-only",
      "binding": "planned",
      "gap": "Supply parent labels and bounded action history alongside the compact MCP action.",
      "sources": [
        {
          "tool": "action_read",
          "operations": [
            "get"
          ],
          "when": "get for an existing action.",
          "services": [
            "actions.get"
          ]
        },
        {
          "tool": "action_write",
          "operations": [
            "create",
            "update"
          ],
          "when": "Successful create/update.",
          "services": [
            "actions.create",
            "actions.update"
          ]
        }
      ]
    },
    {
      "id": "notes",
      "title": "Notes",
      "owner": "F6 Notes",
      "kind": "product",
      "pages": [
        "/notes"
      ],
      "resource_uri": "ui://widget/notes.v1.html",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "as_of": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "description": "Server snapshot time for the stale-snapshot footer."
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 3,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "text": {
                          "type": "string",
                          "minLength": 1
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "since_boundary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "text",
                        "recorded_at",
                        "url",
                        "since_boundary"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "window": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "since": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "until": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          }
                        },
                        "required": [
                          "since",
                          "until"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor",
                  "window"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "totals": {
            "type": "object",
            "properties": {
              "notes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "notes"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "as_of",
          "data",
          "totals"
        ],
        "additionalProperties": false
      },
      "readiness": "contract-only",
      "binding": "planned",
      "gap": "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination.",
      "sources": [
        {
          "tool": "note_read",
          "operations": [
            "list"
          ],
          "when": "list; bounded recent notes with the resolved window.",
          "services": [
            "notes.list"
          ]
        },
        {
          "tool": "note_write",
          "operations": [
            "create",
            "update"
          ],
          "when": "Successful create/update; refreshed list.",
          "services": [
            "notes.create",
            "notes.update"
          ]
        },
        {
          "tool": "note_delete",
          "operations": [
            "commit"
          ],
          "when": "Successful commit; remaining notes only.",
          "services": [
            "notes.delete"
          ]
        }
      ]
    },
    {
      "id": "note",
      "title": "Note",
      "owner": "F6 Notes",
      "kind": "product",
      "pages": [
        "/notes/:id"
      ],
      "resource_uri": "ui://widget/note.v1.html",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "as_of": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "description": "Server snapshot time for the stale-snapshot footer."
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "text": {
                    "type": "string",
                    "minLength": 1
                  },
                  "recorded_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "text",
                  "recorded_at",
                  "url",
                  "since_boundary"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "totals": {
            "type": "object",
            "properties": {},
            "additionalProperties": false
          }
        },
        "required": [
          "as_of",
          "data",
          "totals"
        ],
        "additionalProperties": false
      },
      "readiness": "contract-only",
      "binding": "planned",
      "gap": "Bind the note field from structuredContent to the declared payload; stored text stays untrusted.",
      "sources": [
        {
          "tool": "note_read",
          "operations": [
            "get"
          ],
          "when": "get for an existing note.",
          "services": [
            "notes.get"
          ]
        },
        {
          "tool": "note_write",
          "operations": [
            "create",
            "update"
          ],
          "when": "Successful create/update.",
          "services": [
            "notes.create",
            "notes.update"
          ]
        }
      ]
    },
    {
      "id": "session",
      "title": "Session",
      "owner": "F7 Sessions",
      "kind": "product",
      "pages": [
        "/sessions",
        "/sessions/:id"
      ],
      "resource_uri": "ui://widget/session.v1.html",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "as_of": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                "description": "Server snapshot time for the stale-snapshot footer."
              },
              "data": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "session": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "vendor": {
                            "type": "string",
                            "enum": [
                              "claude",
                              "openai"
                            ],
                            "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                          },
                          "source_url": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uri"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "External conversation link used by Open the conversation. Not the app detail URL."
                          },
                          "type": {
                            "anyOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "goal_setup",
                                  "check_in",
                                  "review",
                                  "open_coaching"
                                ],
                                "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "briefing_notes": {
                            "type": "string",
                            "description": "UI document: Briefing. Server-prepared coaching context."
                          },
                          "headline": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "One-line coaching-session summary used in session lists."
                          },
                          "summary_notes": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI document: Summary. Saved when the coaching session closes."
                          },
                          "started_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "ended_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                          },
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Internal app link to coaching session details; distinct from source_url."
                          },
                          "duration_minutes": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "actions_created": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "actions_reviewed": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "id",
                          "vendor",
                          "source_url",
                          "type",
                          "briefing_notes",
                          "headline",
                          "summary_notes",
                          "started_at",
                          "ended_at",
                          "url",
                          "duration_minutes",
                          "actions_created",
                          "actions_reviewed"
                        ],
                        "additionalProperties": false
                      },
                      "actions": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 100,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "cycle_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "due_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "open",
                                    "in_progress",
                                    "done"
                                  ],
                                  "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                                },
                                "sort_order": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "Drag order within an action group; not a progress status."
                                },
                                "session_id": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "overdue": {
                                  "type": "boolean"
                                },
                                "done_since_boundary": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "id",
                                "cycle_id",
                                "objective_id",
                                "title",
                                "description",
                                "due_at",
                                "status",
                                "sort_order",
                                "session_id",
                                "created_at",
                                "url",
                                "overdue",
                                "done_since_boundary"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor"
                        ],
                        "additionalProperties": false
                      },
                      "continuations": {
                        "type": "object",
                        "propertyNames": {
                          "type": "string",
                          "enum": [
                            "cycles",
                            "objectives",
                            "results",
                            "actions",
                            "notes",
                            "sessions",
                            "result_logs",
                            "habit_logs",
                            "action_logs",
                            "trend"
                          ]
                        },
                        "additionalProperties": {
                          "type": "string",
                          "minLength": 1
                        }
                      }
                    },
                    "required": [
                      "session",
                      "actions",
                      "continuations"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "totals": {
                "type": "object",
                "properties": {
                  "actions": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "actions"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "as_of",
              "data",
              "totals"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "as_of": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                "description": "Server snapshot time for the stale-snapshot footer."
              },
              "data": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 100,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "vendor": {
                              "type": "string",
                              "enum": [
                                "claude",
                                "openai"
                              ],
                              "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                            },
                            "source_url": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uri"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "External conversation link used by Open the conversation. Not the app detail URL."
                            },
                            "type": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "goal_setup",
                                    "check_in",
                                    "review",
                                    "open_coaching"
                                  ],
                                  "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "briefing_notes": {
                              "type": "string",
                              "description": "UI document: Briefing. Server-prepared coaching context."
                            },
                            "headline": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "One-line coaching-session summary used in session lists."
                            },
                            "summary_notes": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI document: Summary. Saved when the coaching session closes."
                            },
                            "started_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "ended_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                            },
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "Internal app link to coaching session details; distinct from source_url."
                            },
                            "duration_minutes": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "actions_created": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "actions_reviewed": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            }
                          },
                          "required": [
                            "id",
                            "vendor",
                            "source_url",
                            "type",
                            "briefing_notes",
                            "headline",
                            "summary_notes",
                            "started_at",
                            "ended_at",
                            "url",
                            "duration_minutes",
                            "actions_created",
                            "actions_reviewed"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "totals": {
                "type": "object",
                "properties": {
                  "sessions": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "sessions"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "as_of",
              "data",
              "totals"
            ],
            "additionalProperties": false
          }
        ]
      },
      "readiness": "contract-only",
      "binding": "planned",
      "gap": "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads.",
      "sources": [
        {
          "tool": "session_read",
          "operations": [
            "list",
            "get"
          ],
          "when": "list or get for a stored session; skip missing-session results.",
          "services": [
            "sessions.list",
            "sessions.get_stored"
          ]
        },
        {
          "tool": "session_close",
          "operations": [
            "call"
          ],
          "when": "Successful explicit closure; show the saved summary and session actions.",
          "services": [
            "sessions.close"
          ]
        }
      ]
    },
    {
      "id": "session_document",
      "title": "Session document",
      "owner": "F7 Sessions",
      "kind": "product",
      "pages": [
        "/sessions/:id/briefing",
        "/sessions/:id/summary"
      ],
      "resource_uri": "ui://widget/session-doc.v1.html",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "as_of": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "description": "Server snapshot time for the stale-snapshot footer."
          },
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "session": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "vendor": {
                        "type": "string",
                        "enum": [
                          "claude",
                          "openai"
                        ],
                        "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                      },
                      "source_url": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uri"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "External conversation link used by Open the conversation. Not the app detail URL."
                      },
                      "type": {
                        "anyOf": [
                          {
                            "type": "string",
                            "enum": [
                              "goal_setup",
                              "check_in",
                              "review",
                              "open_coaching"
                            ],
                            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "briefing_notes": {
                        "type": "string",
                        "description": "UI document: Briefing. Server-prepared coaching context."
                      },
                      "headline": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "One-line coaching-session summary used in session lists."
                      },
                      "summary_notes": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI document: Summary. Saved when the coaching session closes."
                      },
                      "started_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "ended_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                      },
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Internal app link to coaching session details; distinct from source_url."
                      },
                      "duration_minutes": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "actions_created": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "actions_reviewed": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "required": [
                      "id",
                      "vendor",
                      "source_url",
                      "type",
                      "briefing_notes",
                      "headline",
                      "summary_notes",
                      "started_at",
                      "ended_at",
                      "url",
                      "duration_minutes",
                      "actions_created",
                      "actions_reviewed"
                    ],
                    "additionalProperties": false
                  },
                  "document": {
                    "type": "string",
                    "enum": [
                      "briefing",
                      "summary"
                    ]
                  },
                  "text": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "session",
                  "document",
                  "text"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "totals": {
            "type": "object",
            "properties": {},
            "additionalProperties": false
          }
        },
        "required": [
          "as_of",
          "data",
          "totals"
        ],
        "additionalProperties": false
      },
      "readiness": "contract-only",
      "binding": "planned",
      "gap": "Provide the complete session record and selected canonical document text; render stored text as data, never instructions.",
      "sources": [
        {
          "tool": "session_start",
          "operations": [
            "call"
          ],
          "when": "Active access only; saved briefing document.",
          "services": [
            "sessions.start"
          ]
        },
        {
          "tool": "session_read",
          "operations": [
            "get"
          ],
          "when": "get with a selected stored briefing or summary document.",
          "services": [
            "sessions.get_stored"
          ]
        }
      ]
    },
    {
      "id": "cycle",
      "title": "Cycle",
      "owner": "F2 Cycles",
      "kind": "product",
      "pages": [
        "/cycles",
        "/cycles/:id"
      ],
      "resource_uri": "ui://widget/cycle.v1.html",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "as_of": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                "description": "Server snapshot time for the stale-snapshot footer."
              },
              "data": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "cycle": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "intention": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                          },
                          "start_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Starts."
                          },
                          "end_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Ends."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "archived"
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "achievement_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                          },
                          "time_gone_pct": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100,
                            "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                          },
                          "length_weeks": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991,
                            "description": "UI label: Length, in weeks; derived from Starts and Ends."
                          }
                        },
                        "required": [
                          "id",
                          "intention",
                          "start_at",
                          "end_at",
                          "status",
                          "created_at",
                          "url",
                          "achievement_pct",
                          "time_gone_pct",
                          "length_weeks"
                        ],
                        "additionalProperties": false
                      },
                      "objectives": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "cycle_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "deadline_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Deadline; null when no deadline has been set."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "on_track",
                                    "off_track",
                                    "completed"
                                  ],
                                  "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Progress. Derived from measurable results, independently of Status."
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "Historical progress at the resolved last-session boundary; not current Progress."
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "cycle_id",
                                "title",
                                "description",
                                "deadline_at",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement_pp"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor"
                        ],
                        "additionalProperties": false
                      },
                      "continuations": {
                        "type": "object",
                        "propertyNames": {
                          "type": "string",
                          "enum": [
                            "cycles",
                            "objectives",
                            "results",
                            "actions",
                            "notes",
                            "sessions",
                            "result_logs",
                            "habit_logs",
                            "action_logs",
                            "trend"
                          ]
                        },
                        "additionalProperties": {
                          "type": "string",
                          "minLength": 1
                        }
                      }
                    },
                    "required": [
                      "cycle",
                      "objectives",
                      "continuations"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "totals": {
                "type": "object",
                "properties": {
                  "objectives": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "objectives"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "as_of",
              "data",
              "totals"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "as_of": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                "description": "Server snapshot time for the stale-snapshot footer."
              },
              "data": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 100,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "intention": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                            },
                            "start_at": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "UI label: Starts."
                            },
                            "end_at": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "UI label: Ends."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "active",
                                "archived"
                              ]
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "achievement_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                            },
                            "time_gone_pct": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100,
                              "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                            },
                            "length_weeks": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991,
                              "description": "UI label: Length, in weeks; derived from Starts and Ends."
                            }
                          },
                          "required": [
                            "id",
                            "intention",
                            "start_at",
                            "end_at",
                            "status",
                            "created_at",
                            "url",
                            "achievement_pct",
                            "time_gone_pct",
                            "length_weeks"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "totals": {
                "type": "object",
                "properties": {
                  "cycles": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "cycles"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "as_of",
              "data",
              "totals"
            ],
            "additionalProperties": false
          }
        ]
      },
      "readiness": "contract-only",
      "binding": "planned",
      "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle.",
      "sources": [
        {
          "tool": "cycle_read",
          "operations": [
            "list",
            "get"
          ],
          "when": "list or get; skip a missing active cycle.",
          "services": [
            "cycles.list",
            "cycles.get",
            "cycles.get_stored_active"
          ]
        },
        {
          "tool": "cycle_update",
          "operations": [
            "call"
          ],
          "when": "Successful date/intention update.",
          "services": [
            "cycles.update"
          ]
        },
        {
          "tool": "cycle_lifecycle",
          "operations": [
            "create",
            "archive",
            "activate"
          ],
          "when": "Successful create/archive/activate.",
          "services": [
            "cycles.create",
            "cycles.update"
          ]
        }
      ]
    },
    {
      "id": "example",
      "title": "Example",
      "owner": "Temporary scaffold reference",
      "kind": "scaffold",
      "pages": [
        "/example"
      ],
      "resource_uri": "ui://widget/example-card.v0.html",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "examples": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                },
                "name": {
                  "type": "string"
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                },
                "stale": {
                  "type": "boolean"
                }
              },
              "required": [
                "id",
                "name",
                "created_at",
                "stale"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "examples"
        ],
        "additionalProperties": false
      },
      "readiness": "implemented",
      "binding": "bound",
      "gap": null,
      "sources": [
        {
          "tool": "example_list",
          "operations": [
            "call"
          ],
          "when": "Successful list.",
          "services": []
        }
      ]
    }
  ],
  "events": [
    {
      "group": "cycles",
      "name": "cycle_created",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cycle_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "surface": {
            "type": "string",
            "enum": [
              "web",
              "chat"
            ]
          }
        },
        "required": [
          "cycle_id",
          "surface"
        ],
        "additionalProperties": false
      },
      "description": "Durable cycle creation.",
      "requirement": "docs/feature-specs/F2-cycles.md",
      "producers": [
        {
          "service": "cycles.create",
          "when": "After durable creation; no replay duplicate."
        }
      ],
      "external_producers": [],
      "gaps": []
    },
    {
      "group": "cycles",
      "name": "cycle_archived",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cycle_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "reason": {
            "type": "string",
            "enum": [
              "expired",
              "manual",
              "replaced"
            ]
          }
        },
        "required": [
          "cycle_id",
          "reason"
        ],
        "additionalProperties": false
      },
      "description": "Actual transition to archived; never for a no-op.",
      "requirement": "docs/feature-specs/F2-cycles.md",
      "producers": [
        {
          "service": "cycles.create",
          "when": "When creation replaces an incumbent active cycle; reason replaced."
        },
        {
          "service": "cycles.resolve_active",
          "when": "When lazy expiry actually archives the active cycle; reason expired."
        },
        {
          "service": "cycles.update",
          "when": "When status changes to archived (manual), or activation replaces the incumbent (replaced); never for date/field edits or no-op status."
        }
      ],
      "external_producers": [],
      "gaps": []
    },
    {
      "group": "objectives",
      "name": "objective_created",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "objective_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "cycle_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "surface": {
            "type": "string",
            "enum": [
              "web",
              "chat"
            ]
          }
        },
        "required": [
          "objective_id",
          "cycle_id",
          "surface"
        ],
        "additionalProperties": false
      },
      "description": "Durable objective creation; no duplicate on original-outcome replay.",
      "requirement": "docs/feature-specs/F3-objectives.md",
      "producers": [
        {
          "service": "objectives.create",
          "when": "After durable creation; no replay duplicate."
        }
      ],
      "external_producers": [],
      "gaps": []
    },
    {
      "group": "results",
      "name": "result_update_recorded",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "result_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "metric_type": {
            "type": "string",
            "enum": [
              "number",
              "percentage",
              "milestone",
              "habit",
              "performance"
            ],
            "description": "UI label: Type. Number, Percentage, Milestone, Habit or Performance."
          },
          "surface": {
            "type": "string",
            "enum": [
              "web",
              "chat"
            ]
          }
        },
        "required": [
          "result_id",
          "metric_type",
          "surface"
        ],
        "additionalProperties": false
      },
      "description": "Saved value, reading, milestone flip, habit mark or unmark; not a comment-only update.",
      "requirement": "docs/feature-specs/F4-results.md",
      "producers": [
        {
          "service": "result_logs.create",
          "when": "When numeric/performance evidence or a milestone flip is saved; not comment-only rows."
        },
        {
          "service": "habit_logs.set",
          "when": "When a habit mark/unmark changes recorded progress; not comment-only changes or replay."
        }
      ],
      "external_producers": [],
      "gaps": []
    },
    {
      "group": "actions",
      "name": "action_created",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "action_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "cycle_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "objective_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "due_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
              },
              {
                "type": "null"
              }
            ]
          },
          "surface": {
            "type": "string",
            "enum": [
              "web",
              "chat"
            ]
          }
        },
        "required": [
          "action_id",
          "cycle_id",
          "due_at",
          "surface"
        ],
        "additionalProperties": false
      },
      "description": "Durable action creation; due_at is null for an unset web draft.",
      "requirement": "docs/feature-specs/F5-actions.md",
      "producers": [
        {
          "service": "actions.create",
          "when": "After durable creation; no replay duplicate."
        }
      ],
      "external_producers": [],
      "gaps": []
    },
    {
      "group": "actions",
      "name": "action_status_changed",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "action_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "in_progress",
              "done"
            ],
            "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
          },
          "surface": {
            "type": "string",
            "enum": [
              "web",
              "chat"
            ]
          }
        },
        "required": [
          "action_id",
          "status",
          "surface"
        ],
        "additionalProperties": false
      },
      "description": "Each persisted action log, including a repeated status with a comment.",
      "requirement": "docs/feature-specs/F5-actions.md",
      "producers": [
        {
          "service": "action_logs.create",
          "when": "For each persisted log, including repeat status with comment; not receipt replay."
        }
      ],
      "external_producers": [],
      "gaps": []
    },
    {
      "group": "notes",
      "name": "note_created",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "note_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "surface": {
            "type": "string",
            "enum": [
              "web",
              "chat"
            ]
          }
        },
        "required": [
          "note_id",
          "surface"
        ],
        "additionalProperties": false
      },
      "description": "Durable note creation; no duplicate on original-outcome replay.",
      "requirement": "docs/feature-specs/F6-notes.md",
      "producers": [
        {
          "service": "notes.create",
          "when": "After durable creation; not autosave updates or receipt replay."
        }
      ],
      "external_producers": [],
      "gaps": []
    },
    {
      "group": "sessions",
      "name": "session_started",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "vendor": {
            "type": "string",
            "enum": [
              "claude",
              "openai"
            ],
            "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
          },
          "surface": {
            "type": "string",
            "enum": [
              "web",
              "chat"
            ]
          }
        },
        "required": [
          "session_id",
          "vendor",
          "surface"
        ],
        "additionalProperties": false
      },
      "description": "New persisted session, not reuse of an existing open session.",
      "requirement": "docs/feature-specs/F7-sessions.md",
      "producers": [
        {
          "service": "sessions.start",
          "when": "Only when a new session is persisted; not existing-session reuse."
        }
      ],
      "external_producers": [],
      "gaps": []
    },
    {
      "group": "sessions",
      "name": "session_summary_written",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "type": {
            "type": "string",
            "enum": [
              "goal_setup",
              "check_in",
              "review",
              "open_coaching"
            ],
            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
          }
        },
        "required": [
          "session_id",
          "type"
        ],
        "additionalProperties": false
      },
      "description": "First successful close with a summary, not replay or forced stale-session close.",
      "requirement": "docs/feature-specs/F7-sessions.md",
      "producers": [
        {
          "service": "sessions.close",
          "when": "On the first successful close with summary; not replay or forced stale close."
        }
      ],
      "external_producers": [],
      "gaps": []
    },
    {
      "group": "sessions",
      "name": "chat_tool_used",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "tool_name": {
            "type": "string",
            "minLength": 1
          },
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "tool_name",
          "success"
        ],
        "additionalProperties": false
      },
      "description": "MCP tool call outcome; no stored coaching content.",
      "requirement": "docs/feature-specs/F7-sessions.md",
      "producers": [],
      "external_producers": [
        {
          "kind": "mcp-boundary",
          "source": "packages/core/src/shared/mcp/index.ts",
          "when": "For a tool call with an authenticated actor; both success and failure outcomes."
        }
      ],
      "gaps": [
        "Specify treatment of calls without authenticated identity; tenant event storage requires an actor."
      ]
    },
    {
      "group": "identity_billing",
      "name": "account_created",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "user_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "user_id"
        ],
        "additionalProperties": false
      },
      "description": "Durable account creation; user_id matches the canonical user UUID.",
      "requirement": "docs/feature-specs/F1-identity.md",
      "producers": [],
      "external_producers": [
        {
          "kind": "auth-hook",
          "source": "packages/core/src/shared/auth/server.ts",
          "when": "After a newly persisted account."
        }
      ],
      "gaps": []
    },
    {
      "group": "identity_billing",
      "name": "subscription_started",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "plan": {
            "type": "string",
            "minLength": 1,
            "description": "UI label: Plan. Provider-backed name of the selected plan."
          },
          "price": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991,
            "description": "Configured POC monthly price in GBP minor units; 500 means £5."
          }
        },
        "required": [
          "plan",
          "price"
        ],
        "additionalProperties": false
      },
      "description": "First transition to active paid access.",
      "requirement": "docs/feature-specs/F1-identity.md",
      "producers": [],
      "external_producers": [
        {
          "kind": "billing-webhook",
          "source": "packages/core/src/features/identity-billing/handler.ts",
          "when": "On the first verified transition to active; not checkout URL creation."
        }
      ],
      "gaps": []
    },
    {
      "group": "identity_billing",
      "name": "subscription_cancelled",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "tenure_days": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "reason_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "reason_text": {
            "type": "string"
          }
        },
        "required": [
          "tenure_days",
          "reason_code"
        ],
        "additionalProperties": false
      },
      "description": "Once per scheduled or immediate cancellation; no duplicate webhook delivery.",
      "requirement": "docs/feature-specs/F1-identity.md",
      "producers": [],
      "external_producers": [
        {
          "kind": "billing-webhook",
          "source": "packages/core/src/features/identity-billing/handler.ts",
          "when": "On a newly applied scheduled or immediate cancellation, not a duplicate delivery."
        }
      ],
      "gaps": []
    },
    {
      "group": "identity_billing",
      "name": "connector_authorised",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "description": "New durable connector consent; not a replay.",
      "requirement": "docs/feature-specs/F1-identity.md",
      "producers": [],
      "external_producers": [
        {
          "kind": "auth-hook",
          "source": "packages/core/src/shared/auth/server.ts",
          "when": "After new connector consent is persisted."
        }
      ],
      "gaps": []
    },
    {
      "group": "identity_billing",
      "name": "onboarding_step_completed",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "step": {
            "anyOf": [
              {
                "type": "number",
                "const": 1
              },
              {
                "type": "number",
                "const": 2
              },
              {
                "type": "number",
                "const": 3
              }
            ]
          }
        },
        "required": [
          "step"
        ],
        "additionalProperties": false
      },
      "description": "Verified onboarding step completion; never inferred from a redirect alone.",
      "requirement": "docs/feature-specs/F1-identity.md",
      "producers": [],
      "external_producers": [
        {
          "kind": "page",
          "source": "packages/core/src/features/identity-billing/onboarding.page.tsx",
          "when": "After verified step completion; no new public event API is authorized."
        }
      ],
      "gaps": [
        "Specify trusted server recording and repeat-visit deduplication; the page alone is not an authorized event writer."
      ]
    },
    {
      "group": "identity_billing",
      "name": "profile_updated",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "fields": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "name",
                "about_me",
                "timezone"
              ]
            }
          }
        },
        "required": [
          "fields"
        ],
        "additionalProperties": false
      },
      "description": "Changed profile field names only; never profile content.",
      "requirement": "docs/feature-specs/F1-identity.md",
      "producers": [
        {
          "service": "user.update",
          "when": "When at least one editable profile field changes; payload lists changed names only."
        }
      ],
      "external_producers": [],
      "gaps": []
    },
    {
      "group": "identity_billing",
      "name": "account_deleted",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "description": "Successful account deletion; record in the deletion transaction before removing the user so the existing ON DELETE SET NULL preserves the event.",
      "requirement": "docs/feature-specs/F1-identity.md",
      "producers": [
        {
          "service": "user.delete",
          "when": "In the successful deletion transaction, before user removal; ON DELETE SET NULL retains the event. Never on failed provider cancellation or replay."
        }
      ],
      "external_producers": [],
      "gaps": []
    },
    {
      "group": "example",
      "name": "example_created",
      "payload": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "exampleId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          }
        },
        "required": [
          "exampleId"
        ],
        "additionalProperties": false
      },
      "description": "Retained scaffold: one event per fresh example write in the same transaction.",
      "requirement": "packages/core/src/features/example/docs.md",
      "producers": [],
      "external_producers": [],
      "gaps": []
    }
  ],
  "relationship_notice": "Page API references declare intended usage; actual page calls are not enforced here. Widget sources declare intended connections, not payload compatibility; planned projection gaps are explicit and no product artifacts are published. Event relationships declare possible emission; transaction, replay and external-producer behavior remain implementation obligations. Event-specific gaps are listed explicitly.",
  "services": [
    {
      "path": "cycles.create",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "cycles": "write",
        "objectives": "read",
        "idempotency_keys": "write"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Actor/operation/key-scoped original-outcome replay, including post-commit response failures.",
      "emits": [
        {
          "event": "cycle_created",
          "when": "After durable creation; no replay duplicate."
        },
        {
          "event": "cycle_archived",
          "when": "When creation replaces an incumbent active cycle; reason replaced."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F2-cycles.md",
      "source": "packages/core/src/features/cycles/service.contract.ts#createCycle",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "start_at": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "UI label: Starts. Calendar date, YYYY-MM-DD. Required on create; omit on update to preserve."
          },
          "end_at": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "UI label: Ends. Calendar date, YYYY-MM-DD; must be after the resulting start date."
          },
          "intention": {
            "description": "Personal focus. Omit to preserve on update; null clears it.",
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "Unique key per logical create. Reuse the same key AND fields on every retry, including uncertain outcomes. A new create needs a new key."
          }
        },
        "required": [
          "start_at",
          "end_at",
          "idempotency_key"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "cycle": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "intention": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                  },
                  "start_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Starts."
                  },
                  "end_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Ends."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "achievement_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                  },
                  "time_gone_pct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                  },
                  "length_weeks": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "UI label: Length, in weeks; derived from Starts and Ends."
                  }
                },
                "required": [
                  "id",
                  "intention",
                  "start_at",
                  "end_at",
                  "status",
                  "created_at",
                  "url",
                  "achievement_pct",
                  "time_gone_pct",
                  "length_weeks"
                ],
                "additionalProperties": false
              },
              "objectives": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "cycle_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "deadline_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Deadline; null when no deadline has been set."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "on_track",
                            "off_track",
                            "completed"
                          ],
                          "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Progress. Derived from measurable results, independently of Status."
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Historical progress at the resolved last-session boundary; not current Progress."
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "cycle_id",
                        "title",
                        "description",
                        "deadline_at",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement_pp"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "cycle",
              "objectives",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "cycles.create",
          "service": "cycles.create",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "cycle_lifecycle",
          "collection": "cycles",
          "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
          "operation": "create",
          "binding": "bound",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "cycles.create"
          ],
          "gap": null,
          "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations."
        }
      ]
    },
    {
      "path": "cycles.resolve_active",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "write",
      "tables": {
        "cycles": "write"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [
        {
          "event": "cycle_archived",
          "when": "When lazy expiry actually archives the active cycle; reason expired."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F2-cycles.md",
      "source": "packages/core/src/features/cycles/service.contract.ts#getActiveCycle",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "intention": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
              },
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends."
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "achievement_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
              },
              "time_gone_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
              },
              "length_weeks": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "UI label: Length, in weeks; derived from Starts and Ends."
              }
            },
            "required": [
              "id",
              "intention",
              "start_at",
              "end_at",
              "status",
              "created_at",
              "url",
              "achievement_pct",
              "time_gone_pct",
              "length_weeks"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "api": [
        {
          "operation": "cycles.resolve_active",
          "service": "cycles.resolve_active",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "cycles.get_stored_active",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "cycles": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F2-cycles.md",
      "source": "packages/core/src/features/cycles/service.contract.ts#getStoredActiveCycle",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "intention": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
              },
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends."
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "achievement_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
              },
              "time_gone_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
              },
              "length_weeks": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "UI label: Length, in weeks; derived from Starts and Ends."
              }
            },
            "required": [
              "id",
              "intention",
              "start_at",
              "end_at",
              "status",
              "created_at",
              "url",
              "achievement_pct",
              "time_gone_pct",
              "length_weeks"
            ],
            "additionalProperties": false
          },
          {
            "type": "null"
          }
        ]
      },
      "api": [],
      "mcp": [
        {
          "tool": "cycle_read",
          "collection": "cycles",
          "specification": "docs/feature-specs/F2-cycles.md#entity-specific-cycle-query",
          "operation": "get",
          "binding": "bound",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "cycles.get",
            "cycles.get_stored_active"
          ],
          "gap": null,
          "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations."
        }
      ]
    },
    {
      "path": "cycles.preview_deletion",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "cycles": "read",
        "objectives": "read",
        "results": "read",
        "result_logs": "read",
        "habit_logs": "read",
        "actions": "read",
        "action_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F2-cycles.md",
      "source": "packages/core/src/features/cycles/service.contract.ts#previewCycleDeletion",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "const": "preview"
          },
          "preview_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "cycle": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends."
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived"
                ]
              }
            },
            "required": [
              "id",
              "start_at",
              "end_at",
              "status"
            ],
            "additionalProperties": false
          },
          "deleted": {
            "type": "object",
            "properties": {
              "cycles": {
                "type": "number",
                "const": 1
              },
              "objectives": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "results": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "result_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "habit_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "actions": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "action_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "cycles",
              "objectives",
              "results",
              "result_logs",
              "habit_logs",
              "actions",
              "action_logs"
            ],
            "additionalProperties": false
          },
          "retained": {
            "type": "array",
            "prefixItems": [
              {
                "type": "string",
                "const": "notes"
              },
              {
                "type": "string",
                "const": "sessions"
              }
            ]
          },
          "active_remaining": {
            "type": "boolean"
          },
          "approval": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "required"
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "status",
              "url"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "operation",
          "preview_id",
          "expires_at",
          "cycle",
          "deleted",
          "retained",
          "active_remaining",
          "approval"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "cycles.preview_deletion",
          "service": "cycles.preview_deletion",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "cycle_delete",
          "collection": "cycles",
          "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
          "operation": "preview",
          "binding": "bound",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "cycles.preview_deletion"
          ],
          "gap": null,
          "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations."
        }
      ]
    },
    {
      "path": "cycles.get",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "cycles": "read",
        "objectives": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F2-cycles.md",
      "source": "packages/core/src/features/cycles/service.contract.ts#getCycle",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cycle": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "intention": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
              },
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends."
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "achievement_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
              },
              "time_gone_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
              },
              "length_weeks": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "UI label: Length, in weeks; derived from Starts and Ends."
              }
            },
            "required": [
              "id",
              "intention",
              "start_at",
              "end_at",
              "status",
              "created_at",
              "url",
              "achievement_pct",
              "time_gone_pct",
              "length_weeks"
            ],
            "additionalProperties": false
          },
          "objectives": {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 50,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "cycle_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "deadline_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Deadline; null when no deadline has been set."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "on_track",
                        "off_track",
                        "completed"
                      ],
                      "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "short_code": {
                      "type": "string",
                      "minLength": 1
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Progress. Derived from measurable results, independently of Status."
                    },
                    "boundary_progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Historical progress at the resolved last-session boundary; not current Progress."
                    },
                    "movement_pp": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "cycle_id",
                    "title",
                    "description",
                    "deadline_at",
                    "status",
                    "created_at",
                    "short_code",
                    "url",
                    "progress_pct",
                    "boundary_progress_pct",
                    "movement_pp"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor"
            ],
            "additionalProperties": false
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "cycle",
          "objectives",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "cycles.get",
          "service": "cycles.get",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "cycle_read",
          "collection": "cycles",
          "specification": "docs/feature-specs/F2-cycles.md#entity-specific-cycle-query",
          "operation": "get",
          "binding": "bound",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "cycles.get",
            "cycles.get_stored_active"
          ],
          "gap": null,
          "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations."
        }
      ]
    },
    {
      "path": "cycles.list",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "cycles": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F2-cycles.md",
      "source": "packages/core/src/features/cycles/service.contract.ts#listCycles",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          }
        },
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "intention": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                },
                "start_at": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                  "description": "UI label: Starts."
                },
                "end_at": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                  "description": "UI label: Ends."
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "active",
                    "archived"
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "achievement_pct": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                },
                "time_gone_pct": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100,
                  "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                },
                "length_weeks": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991,
                  "description": "UI label: Length, in weeks; derived from Starts and Ends."
                }
              },
              "required": [
                "id",
                "intention",
                "start_at",
                "end_at",
                "status",
                "created_at",
                "url",
                "achievement_pct",
                "time_gone_pct",
                "length_weeks"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "cycles.list",
          "service": "cycles.list",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "cycle_read",
          "collection": "cycles",
          "specification": "docs/feature-specs/F2-cycles.md#entity-specific-cycle-query",
          "operation": "list",
          "binding": "bound",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "cycles.list"
          ],
          "gap": null,
          "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations."
        }
      ]
    },
    {
      "path": "cycles.update",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "cycles": "write",
        "objectives": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [
        {
          "event": "cycle_archived",
          "when": "When status changes to archived (manual), or activation replaces the incumbent (replaced); never for date/field edits or no-op status."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F2-cycles.md",
      "source": "packages/core/src/features/cycles/service.contract.ts#updateCycle",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              {
                "type": "string",
                "const": "active"
              }
            ],
            "description": "Owned cycle UUID from fresh context, or active for the stored active cycle at execution. No date-based expiry or fallback. Use the UUID for a specifically selected cycle."
          },
          "start_at": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "UI label: Starts. Calendar date, YYYY-MM-DD. Required on create; omit on update to preserve."
          },
          "end_at": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "UI label: Ends. Calendar date, YYYY-MM-DD; must be after the resulting start date."
          },
          "intention": {
            "description": "Personal focus. Omit to preserve on update; null clears it.",
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "archived"
            ]
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "cycle": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "intention": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                  },
                  "start_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Starts."
                  },
                  "end_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Ends."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "achievement_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                  },
                  "time_gone_pct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                  },
                  "length_weeks": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "UI label: Length, in weeks; derived from Starts and Ends."
                  }
                },
                "required": [
                  "id",
                  "intention",
                  "start_at",
                  "end_at",
                  "status",
                  "created_at",
                  "url",
                  "achievement_pct",
                  "time_gone_pct",
                  "length_weeks"
                ],
                "additionalProperties": false
              },
              "objectives": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "cycle_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "deadline_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Deadline; null when no deadline has been set."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "on_track",
                            "off_track",
                            "completed"
                          ],
                          "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Progress. Derived from measurable results, independently of Status."
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Historical progress at the resolved last-session boundary; not current Progress."
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "cycle_id",
                        "title",
                        "description",
                        "deadline_at",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement_pp"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "cycle",
              "objectives",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "cycles.update",
          "service": "cycles.update",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "cycle_update",
          "collection": "cycles",
          "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
          "operation": "call",
          "binding": "bound",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "cycles.update"
          ],
          "gap": null,
          "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations."
        },
        {
          "tool": "cycle_lifecycle",
          "collection": "cycles",
          "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
          "operation": "archive",
          "binding": "bound",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "cycles.update"
          ],
          "gap": null,
          "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations."
        },
        {
          "tool": "cycle_lifecycle",
          "collection": "cycles",
          "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
          "operation": "activate",
          "binding": "bound",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "cycles.update"
          ],
          "gap": null,
          "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations."
        }
      ]
    },
    {
      "path": "cycles.delete",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "delete",
      "tables": {
        "cycles": "delete"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F2-cycles.md",
      "source": "packages/core/src/features/cycles/service.contract.ts#deleteCycle",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "preview_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Server-issued impact preview ID. This is not approval: the service checks genuine user approval recorded by the trusted host/application."
          }
        },
        "required": [
          "id",
          "preview_id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "active_remaining": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "active_remaining"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "cycles.delete",
          "service": "cycles.delete",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "cycle_delete",
          "collection": "cycles",
          "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
          "operation": "commit",
          "binding": "bound",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "cycles.delete"
          ],
          "gap": null,
          "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations."
        }
      ]
    },
    {
      "path": "objectives.preview_deletion",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "objectives": "read",
        "results": "read",
        "result_logs": "read",
        "habit_logs": "read",
        "actions": "read",
        "action_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Preview does not authorize deletion. Commit rechecks actor, target, impact, expiry and application approval; incomplete impact fails closed.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F3-objectives.md",
      "source": "packages/core/src/features/objectives/service.contract.ts#previewObjectiveDeletion",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "const": "preview"
          },
          "preview_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "target": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "title"
            ],
            "additionalProperties": false
          },
          "deleted": {
            "type": "object",
            "properties": {
              "objectives": {
                "type": "number",
                "const": 1
              },
              "results": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "result_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "habit_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "actions": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "action_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "objectives",
              "results",
              "result_logs",
              "habit_logs",
              "actions",
              "action_logs"
            ],
            "additionalProperties": false
          },
          "approval": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "required"
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "status",
              "url"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "operation",
          "preview_id",
          "expires_at",
          "target",
          "deleted",
          "approval"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "objectives.preview_deletion",
          "service": "objectives.preview_deletion",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "objective_delete",
          "collection": "objectives",
          "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
          "operation": "preview",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "objectives.preview_deletion"
          ],
          "gap": null,
          "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only."
        }
      ]
    },
    {
      "path": "objectives.create",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "objectives": "write",
        "cycles": "read",
        "results": "read",
        "actions": "read",
        "idempotency_keys": "write"
      },
      "external": null,
      "trusted_context": null,
      "retry": "API requires client-key replay; unkeyed MCP calls must inspect state after an uncertain outcome.",
      "emits": [
        {
          "event": "objective_created",
          "when": "After durable creation; no replay duplicate."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F3-objectives.md",
      "source": "packages/core/src/features/objectives/service.contract.ts#createObjective",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "title": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "deadline_at": {
                "description": "UI label: Deadline. Optional; omitted or null creates the objective with no deadline.",
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "idempotency_key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              }
            },
            "required": [
              "title",
              "idempotency_key"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "title": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "deadline_at": {
                "description": "UI label: Deadline. Optional; omitted or null creates the objective with no deadline.",
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "title"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "objective": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "deadline_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Deadline; null when no deadline has been set."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "on_track",
                      "off_track",
                      "completed"
                    ],
                    "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Progress. Derived from measurable results, independently of Status."
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Historical progress at the resolved last-session boundary; not current Progress."
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "title",
                  "description",
                  "deadline_at",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement_pp"
                ],
                "additionalProperties": false
              },
              "cycle": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "intention": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                  },
                  "start_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Starts."
                  },
                  "end_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Ends."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "achievement_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                  },
                  "time_gone_pct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                  },
                  "length_weeks": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "UI label: Length, in weeks; derived from Starts and Ends."
                  }
                },
                "required": [
                  "id",
                  "intention",
                  "start_at",
                  "end_at",
                  "status",
                  "created_at",
                  "url",
                  "achievement_pct",
                  "time_gone_pct",
                  "length_weeks"
                ],
                "additionalProperties": false
              },
              "results": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "number"
                            },
                            "start_value": {
                              "type": "number"
                            },
                            "target_value": {
                              "type": "number"
                            },
                            "unit": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Unit. Used by Number and Performance results."
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "null"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                            },
                            "boundary_value": {
                              "type": "number"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "percentage"
                            },
                            "start_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "target_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "unit": {
                              "type": "null"
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "null"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "boundary_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "milestone"
                            },
                            "start_value": {
                              "type": "number",
                              "const": 0
                            },
                            "target_value": {
                              "type": "number",
                              "const": 1
                            },
                            "unit": {
                              "type": "null"
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "null"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "anyOf": [
                                {
                                  "type": "number",
                                  "const": 0
                                },
                                {
                                  "type": "number",
                                  "const": 1
                                }
                              ]
                            },
                            "boundary_value": {
                              "anyOf": [
                                {
                                  "type": "number",
                                  "const": 0
                                },
                                {
                                  "type": "number",
                                  "const": 1
                                }
                              ]
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "habit"
                            },
                            "start_value": {
                              "type": "number",
                              "const": 0
                            },
                            "target_value": {
                              "type": "number",
                              "const": 100
                            },
                            "unit": {
                              "type": "null"
                            },
                            "cadence": {
                              "type": "string",
                              "enum": [
                                "weekly",
                                "monthly"
                              ],
                              "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                            },
                            "per": {
                              "type": "integer",
                              "exclusiveMinimum": 0,
                              "maximum": 9007199254740991
                            },
                            "since": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                            },
                            "boundary_value": {
                              "type": "number"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "performance"
                            },
                            "start_value": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                            },
                            "target_value": {
                              "type": "number"
                            },
                            "unit": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Unit. Used by Number and Performance results."
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                            },
                            "boundary_value": {
                              "type": "number"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "actions": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "cycle_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "due_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "done"
                          ],
                          "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                        },
                        "sort_order": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Drag order within an action group; not a progress status."
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "overdue": {
                          "type": "boolean"
                        },
                        "done_since_boundary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "cycle_id",
                        "objective_id",
                        "title",
                        "description",
                        "due_at",
                        "status",
                        "sort_order",
                        "session_id",
                        "created_at",
                        "url",
                        "overdue",
                        "done_since_boundary"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "objective",
              "cycle",
              "results",
              "actions",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "objectives.create",
          "service": "objectives.create",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "objective_write",
          "collection": "objectives",
          "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
          "operation": "create",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "objectives.create"
          ],
          "gap": null,
          "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only."
        }
      ]
    },
    {
      "path": "objectives.list",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "objectives": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F3-objectives.md",
      "source": "packages/core/src/features/objectives/service.contract.ts#listObjectives",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "cycle_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "cycle_id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "title": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "deadline_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "UI label: Deadline; null when no deadline has been set."
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "on_track",
                    "off_track",
                    "completed"
                  ],
                  "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                "short_code": {
                  "type": "string",
                  "minLength": 1
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "progress_pct": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "UI label: Progress. Derived from measurable results, independently of Status."
                },
                "boundary_progress_pct": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Historical progress at the resolved last-session boundary; not current Progress."
                },
                "movement_pp": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "cycle_id",
                "title",
                "description",
                "deadline_at",
                "status",
                "created_at",
                "short_code",
                "url",
                "progress_pct",
                "boundary_progress_pct",
                "movement_pp"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "cycle_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor",
          "cycle_id"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "objectives.list",
          "service": "objectives.list",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "objective_read",
          "collection": "objectives",
          "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
          "operation": "list",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "objectives.list"
          ],
          "gap": null,
          "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only."
        }
      ]
    },
    {
      "path": "objectives.get",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "objectives": "read",
        "cycles": "read",
        "results": "read",
        "actions": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F3-objectives.md",
      "source": "packages/core/src/features/objectives/service.contract.ts#getObjective",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "objective": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "deadline_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Deadline; null when no deadline has been set."
              },
              "status": {
                "type": "string",
                "enum": [
                  "on_track",
                  "off_track",
                  "completed"
                ],
                "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "short_code": {
                "type": "string",
                "minLength": 1
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "progress_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Progress. Derived from measurable results, independently of Status."
              },
              "boundary_progress_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Historical progress at the resolved last-session boundary; not current Progress."
              },
              "movement_pp": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id",
              "cycle_id",
              "title",
              "description",
              "deadline_at",
              "status",
              "created_at",
              "short_code",
              "url",
              "progress_pct",
              "boundary_progress_pct",
              "movement_pp"
            ],
            "additionalProperties": false
          },
          "cycle": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "intention": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
              },
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends."
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "achievement_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
              },
              "time_gone_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
              },
              "length_weeks": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "UI label: Length, in weeks; derived from Starts and Ends."
              }
            },
            "required": [
              "id",
              "intention",
              "start_at",
              "end_at",
              "status",
              "created_at",
              "url",
              "achievement_pct",
              "time_gone_pct",
              "length_weeks"
            ],
            "additionalProperties": false
          },
          "results": {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 50,
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "number"
                        },
                        "start_value": {
                          "type": "number"
                        },
                        "target_value": {
                          "type": "number"
                        },
                        "unit": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Unit. Used by Number and Performance results."
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "percentage"
                        },
                        "start_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "target_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "boundary_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "milestone"
                        },
                        "start_value": {
                          "type": "number",
                          "const": 0
                        },
                        "target_value": {
                          "type": "number",
                          "const": 1
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "anyOf": [
                            {
                              "type": "number",
                              "const": 0
                            },
                            {
                              "type": "number",
                              "const": 1
                            }
                          ]
                        },
                        "boundary_value": {
                          "anyOf": [
                            {
                              "type": "number",
                              "const": 0
                            },
                            {
                              "type": "number",
                              "const": 1
                            }
                          ]
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "habit"
                        },
                        "start_value": {
                          "type": "number",
                          "const": 0
                        },
                        "target_value": {
                          "type": "number",
                          "const": 100
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "string",
                          "enum": [
                            "weekly",
                            "monthly"
                          ],
                          "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                        },
                        "per": {
                          "type": "integer",
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991
                        },
                        "since": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "performance"
                        },
                        "start_value": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                        },
                        "target_value": {
                          "type": "number"
                        },
                        "unit": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Unit. Used by Number and Performance results."
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor"
            ],
            "additionalProperties": false
          },
          "actions": {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 50,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "cycle_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "objective_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "due_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "open",
                        "in_progress",
                        "done"
                      ],
                      "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                    },
                    "sort_order": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Drag order within an action group; not a progress status."
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "overdue": {
                      "type": "boolean"
                    },
                    "done_since_boundary": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "id",
                    "cycle_id",
                    "objective_id",
                    "title",
                    "description",
                    "due_at",
                    "status",
                    "sort_order",
                    "session_id",
                    "created_at",
                    "url",
                    "overdue",
                    "done_since_boundary"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor"
            ],
            "additionalProperties": false
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "objective",
          "cycle",
          "results",
          "actions",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "objectives.get",
          "service": "objectives.get",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "objective_read",
          "collection": "objectives",
          "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
          "operation": "get",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "objectives.get"
          ],
          "gap": null,
          "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only."
        }
      ]
    },
    {
      "path": "objectives.update",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "objectives": "write",
        "cycles": "read",
        "results": "read",
        "actions": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F3-objectives.md",
      "source": "packages/core/src/features/objectives/service.contract.ts#updateObjective",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "deadline_at": {
            "description": "UI label: Deadline. Omit to preserve; a date sets or replaces it. A deadline cannot be cleared, so null is rejected.",
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
          },
          "status": {
            "type": "string",
            "enum": [
              "on_track",
              "off_track",
              "completed"
            ],
            "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "objective": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "deadline_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Deadline; null when no deadline has been set."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "on_track",
                      "off_track",
                      "completed"
                    ],
                    "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Progress. Derived from measurable results, independently of Status."
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Historical progress at the resolved last-session boundary; not current Progress."
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "title",
                  "description",
                  "deadline_at",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement_pp"
                ],
                "additionalProperties": false
              },
              "cycle": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "intention": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                  },
                  "start_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Starts."
                  },
                  "end_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Ends."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "achievement_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                  },
                  "time_gone_pct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                  },
                  "length_weeks": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "UI label: Length, in weeks; derived from Starts and Ends."
                  }
                },
                "required": [
                  "id",
                  "intention",
                  "start_at",
                  "end_at",
                  "status",
                  "created_at",
                  "url",
                  "achievement_pct",
                  "time_gone_pct",
                  "length_weeks"
                ],
                "additionalProperties": false
              },
              "results": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "number"
                            },
                            "start_value": {
                              "type": "number"
                            },
                            "target_value": {
                              "type": "number"
                            },
                            "unit": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Unit. Used by Number and Performance results."
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "null"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                            },
                            "boundary_value": {
                              "type": "number"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "percentage"
                            },
                            "start_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "target_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "unit": {
                              "type": "null"
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "null"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "boundary_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "milestone"
                            },
                            "start_value": {
                              "type": "number",
                              "const": 0
                            },
                            "target_value": {
                              "type": "number",
                              "const": 1
                            },
                            "unit": {
                              "type": "null"
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "null"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "anyOf": [
                                {
                                  "type": "number",
                                  "const": 0
                                },
                                {
                                  "type": "number",
                                  "const": 1
                                }
                              ]
                            },
                            "boundary_value": {
                              "anyOf": [
                                {
                                  "type": "number",
                                  "const": 0
                                },
                                {
                                  "type": "number",
                                  "const": 1
                                }
                              ]
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "habit"
                            },
                            "start_value": {
                              "type": "number",
                              "const": 0
                            },
                            "target_value": {
                              "type": "number",
                              "const": 100
                            },
                            "unit": {
                              "type": "null"
                            },
                            "cadence": {
                              "type": "string",
                              "enum": [
                                "weekly",
                                "monthly"
                              ],
                              "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                            },
                            "per": {
                              "type": "integer",
                              "exclusiveMinimum": 0,
                              "maximum": 9007199254740991
                            },
                            "since": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                            },
                            "boundary_value": {
                              "type": "number"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "performance"
                            },
                            "start_value": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                            },
                            "target_value": {
                              "type": "number"
                            },
                            "unit": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Unit. Used by Number and Performance results."
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                            },
                            "boundary_value": {
                              "type": "number"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "actions": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "cycle_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "due_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "done"
                          ],
                          "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                        },
                        "sort_order": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Drag order within an action group; not a progress status."
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "overdue": {
                          "type": "boolean"
                        },
                        "done_since_boundary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "cycle_id",
                        "objective_id",
                        "title",
                        "description",
                        "due_at",
                        "status",
                        "sort_order",
                        "session_id",
                        "created_at",
                        "url",
                        "overdue",
                        "done_since_boundary"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "objective",
              "cycle",
              "results",
              "actions",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "objectives.update",
          "service": "objectives.update",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "objective_write",
          "collection": "objectives",
          "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
          "operation": "update",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "objectives.update"
          ],
          "gap": null,
          "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only."
        }
      ]
    },
    {
      "path": "objectives.delete",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "delete",
      "tables": {
        "objectives": "delete"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F3-objectives.md",
      "source": "packages/core/src/features/objectives/service.contract.ts#deleteObjective",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "preview_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Server impact preview ID; trusted application approval must already exist."
          }
        },
        "required": [
          "id",
          "preview_id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "objectives.delete",
          "service": "objectives.delete",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "objective_delete",
          "collection": "objectives",
          "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
          "operation": "commit",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "objectives.delete"
          ],
          "gap": null,
          "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only."
        }
      ]
    },
    {
      "path": "results.history",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "results": "read",
        "result_logs": "read",
        "habit_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#readResultHistory",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "result_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "kind": {
            "type": "string",
            "enum": [
              "result_logs",
              "habit_logs",
              "trend"
            ],
            "description": "Evidence stream to page; get returns current figures regardless of this window."
          },
          "window": {
            "type": "object",
            "properties": {
              "since": {
                "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  },
                  {
                    "type": "string",
                    "enum": [
                      "last_session",
                      "cycle_start"
                    ]
                  }
                ]
              },
              "until": {
                "description": "Exclusive upper bound; default is the server time captured on the first page.",
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                ]
              }
            },
            "additionalProperties": false
          }
        },
        "required": [
          "result_id",
          "kind"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "result_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "comment": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "recorded_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "result_id",
                    "value",
                    "comment",
                    "session_id",
                    "recorded_at"
                  ],
                  "additionalProperties": false,
                  "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "kind": {
                "type": "string",
                "const": "result_logs"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "result_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "day": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "result_id",
                    "day",
                    "session_id",
                    "created_at"
                  ],
                  "additionalProperties": false,
                  "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "kind": {
                "type": "string",
                "const": "habit_logs"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "value"
                        },
                        "at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "value": {
                          "type": "number"
                        },
                        "pace": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "kind",
                        "at",
                        "value",
                        "pace"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "habit"
                        },
                        "from": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "to": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "actual": {
                          "type": "integer",
                          "minimum": -9007199254740991,
                          "maximum": 9007199254740991
                        },
                        "expected": {
                          "type": "number"
                        },
                        "expected_full": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "kind",
                        "from",
                        "to",
                        "actual",
                        "expected",
                        "expected_full"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "performance"
                        },
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "value": {
                          "type": "number"
                        },
                        "target": {
                          "type": "number"
                        },
                        "gap": {
                          "type": "number"
                        },
                        "share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "at",
                        "value",
                        "target",
                        "gap",
                        "share"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "kind": {
                "type": "string",
                "const": "trend"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          }
        ]
      },
      "api": [],
      "mcp": [
        {
          "tool": "result_read",
          "collection": "results",
          "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
          "operation": "history",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "results.history"
          ],
          "gap": null,
          "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters."
        }
      ]
    },
    {
      "path": "results.preview_deletion",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "results": "read",
        "result_logs": "read",
        "habit_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Preview does not authorize deletion. Commit rechecks actor, target, impact, expiry and application approval; incomplete impact fails closed.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#previewResultDeletion",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "const": "preview"
          },
          "preview_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "target": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "title"
            ],
            "additionalProperties": false
          },
          "deleted": {
            "type": "object",
            "properties": {
              "results": {
                "type": "number",
                "const": 1
              },
              "result_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "habit_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "results",
              "result_logs",
              "habit_logs"
            ],
            "additionalProperties": false
          },
          "approval": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "required"
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "status",
              "url"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "operation",
          "preview_id",
          "expires_at",
          "target",
          "deleted",
          "approval"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "results.preview_deletion",
          "service": "results.preview_deletion",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "result_delete",
          "collection": "results",
          "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
          "operation": "preview",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "results.preview_deletion"
          ],
          "gap": null,
          "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters."
        }
      ]
    },
    {
      "path": "results.create",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "results": "write",
        "cycles": "read",
        "objectives": "read",
        "result_logs": "read",
        "habit_logs": "read",
        "idempotency_keys": "write"
      },
      "external": null,
      "trusted_context": null,
      "retry": "API requires client-key replay; unkeyed MCP calls must inspect state after an uncertain outcome.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#createResult",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "number"
                  },
                  "start_value": {
                    "type": "number"
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "idempotency_key": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value",
                  "idempotency_key"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "percentage"
                  },
                  "start_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "target_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "idempotency_key": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value",
                  "idempotency_key"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "milestone"
                  },
                  "idempotency_key": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "idempotency_key"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "habit"
                  },
                  "cadence": {
                    "type": "string",
                    "enum": [
                      "weekly",
                      "monthly"
                    ],
                    "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                  },
                  "per": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 9007199254740991,
                    "description": "UI label: Times per selected Cadence."
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "idempotency_key": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "cadence",
                  "per",
                  "idempotency_key"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "performance"
                  },
                  "start_value": {
                    "type": "number"
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "idempotency_key": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value",
                  "idempotency_key"
                ],
                "additionalProperties": false
              }
            ]
          },
          {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "number"
                  },
                  "start_value": {
                    "type": "number"
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "percentage"
                  },
                  "start_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "target_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "milestone"
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "habit"
                  },
                  "cadence": {
                    "type": "string",
                    "enum": [
                      "weekly",
                      "monthly"
                    ],
                    "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                  },
                  "per": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 9007199254740991,
                    "description": "UI label: Times per selected Cadence."
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "cadence",
                  "per"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "performance"
                  },
                  "start_value": {
                    "type": "number"
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value"
                ],
                "additionalProperties": false
              }
            ]
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "parents": {
                "type": "object",
                "properties": {
                  "cycle": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "intention": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                          },
                          "start_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Starts."
                          },
                          "end_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Ends."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "archived"
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "achievement_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                          },
                          "time_gone_pct": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100,
                            "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                          },
                          "length_weeks": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991,
                            "description": "UI label: Length, in weeks; derived from Starts and Ends."
                          }
                        },
                        "required": [
                          "id",
                          "intention",
                          "start_at",
                          "end_at",
                          "status",
                          "created_at",
                          "url",
                          "achievement_pct",
                          "time_gone_pct",
                          "length_weeks"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "objectives": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "cycle_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "deadline_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Deadline; null when no deadline has been set."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "on_track",
                                "off_track",
                                "completed"
                              ],
                              "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Progress. Derived from measurable results, independently of Status."
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Historical progress at the resolved last-session boundary; not current Progress."
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "cycle_id",
                            "title",
                            "description",
                            "deadline_at",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement_pp"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "cycle",
                  "objectives"
                ],
                "additionalProperties": false
              },
              "result_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "value",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "habit_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "day": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "day",
                        "session_id",
                        "created_at"
                      ],
                      "additionalProperties": false,
                      "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "trend": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "value"
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "pace": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "at",
                            "value",
                            "pace"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "habit"
                            },
                            "from": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "to": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "actual": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            "expected": {
                              "type": "number"
                            },
                            "expected_full": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "from",
                            "to",
                            "actual",
                            "expected",
                            "expected_full"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "performance"
                            },
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "target": {
                              "type": "number"
                            },
                            "gap": {
                              "type": "number"
                            },
                            "share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "kind",
                            "id",
                            "at",
                            "value",
                            "target",
                            "gap",
                            "share"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "result",
              "parents",
              "result_logs",
              "habit_logs",
              "trend",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "results.create",
          "service": "results.create",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "result_write",
          "collection": "results",
          "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
          "operation": "create",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "results.create"
          ],
          "gap": null,
          "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters."
        }
      ]
    },
    {
      "path": "results.list",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "results": "read",
        "cycles": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#listResults",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "objective_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "cycle_id": {
            "description": "List results across one cycle instead of a single objective. Supply exactly one parent selector.",
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "attention": {
            "description": "Optional briefing subset: no evidence ever, no update in the window, or habit with no mark in the window.",
            "type": "string",
            "enum": [
              "never_updated",
              "silent",
              "unmarked"
            ]
          },
          "window": {
            "description": "Required for silent/unmarked attention. Use exact server-resolved briefing bounds; current result figures remain current.",
            "type": "object",
            "properties": {
              "since": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "until": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              }
            },
            "required": [
              "since",
              "until"
            ],
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "objective_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "metric_type": {
                      "type": "string",
                      "const": "number"
                    },
                    "start_value": {
                      "type": "number"
                    },
                    "target_value": {
                      "type": "number"
                    },
                    "unit": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Unit. Used by Number and Performance results."
                    },
                    "cadence": {
                      "type": "null"
                    },
                    "per": {
                      "type": "null"
                    },
                    "since": {
                      "type": "null"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "in_progress",
                        "completed"
                      ],
                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "short_code": {
                      "type": "string",
                      "minLength": 1
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "current_value": {
                      "type": "number",
                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                    },
                    "boundary_value": {
                      "type": "number"
                    },
                    "progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "boundary_progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "movement": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "movement_pp": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "evidence_count": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "last_recorded_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "habit_expected_since_boundary": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "habit_logs_since_boundary": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "performance_share": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "objective_id",
                    "title",
                    "description",
                    "metric_type",
                    "start_value",
                    "target_value",
                    "unit",
                    "cadence",
                    "per",
                    "since",
                    "status",
                    "created_at",
                    "short_code",
                    "url",
                    "current_value",
                    "boundary_value",
                    "progress_pct",
                    "boundary_progress_pct",
                    "movement",
                    "movement_pp",
                    "evidence_count",
                    "last_recorded_at",
                    "habit_expected_since_boundary",
                    "habit_logs_since_boundary",
                    "performance_share"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "objective_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "metric_type": {
                      "type": "string",
                      "const": "percentage"
                    },
                    "start_value": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "target_value": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "unit": {
                      "type": "null"
                    },
                    "cadence": {
                      "type": "null"
                    },
                    "per": {
                      "type": "null"
                    },
                    "since": {
                      "type": "null"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "in_progress",
                        "completed"
                      ],
                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "short_code": {
                      "type": "string",
                      "minLength": 1
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "current_value": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "boundary_value": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "boundary_progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "movement": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "movement_pp": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "evidence_count": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "last_recorded_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "habit_expected_since_boundary": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "habit_logs_since_boundary": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "performance_share": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "objective_id",
                    "title",
                    "description",
                    "metric_type",
                    "start_value",
                    "target_value",
                    "unit",
                    "cadence",
                    "per",
                    "since",
                    "status",
                    "created_at",
                    "short_code",
                    "url",
                    "current_value",
                    "boundary_value",
                    "progress_pct",
                    "boundary_progress_pct",
                    "movement",
                    "movement_pp",
                    "evidence_count",
                    "last_recorded_at",
                    "habit_expected_since_boundary",
                    "habit_logs_since_boundary",
                    "performance_share"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "objective_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "metric_type": {
                      "type": "string",
                      "const": "milestone"
                    },
                    "start_value": {
                      "type": "number",
                      "const": 0
                    },
                    "target_value": {
                      "type": "number",
                      "const": 1
                    },
                    "unit": {
                      "type": "null"
                    },
                    "cadence": {
                      "type": "null"
                    },
                    "per": {
                      "type": "null"
                    },
                    "since": {
                      "type": "null"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "in_progress",
                        "completed"
                      ],
                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "short_code": {
                      "type": "string",
                      "minLength": 1
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "current_value": {
                      "anyOf": [
                        {
                          "type": "number",
                          "const": 0
                        },
                        {
                          "type": "number",
                          "const": 1
                        }
                      ]
                    },
                    "boundary_value": {
                      "anyOf": [
                        {
                          "type": "number",
                          "const": 0
                        },
                        {
                          "type": "number",
                          "const": 1
                        }
                      ]
                    },
                    "progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "boundary_progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "movement": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "movement_pp": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "evidence_count": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "last_recorded_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "habit_expected_since_boundary": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "habit_logs_since_boundary": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "performance_share": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "objective_id",
                    "title",
                    "description",
                    "metric_type",
                    "start_value",
                    "target_value",
                    "unit",
                    "cadence",
                    "per",
                    "since",
                    "status",
                    "created_at",
                    "short_code",
                    "url",
                    "current_value",
                    "boundary_value",
                    "progress_pct",
                    "boundary_progress_pct",
                    "movement",
                    "movement_pp",
                    "evidence_count",
                    "last_recorded_at",
                    "habit_expected_since_boundary",
                    "habit_logs_since_boundary",
                    "performance_share"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "objective_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "metric_type": {
                      "type": "string",
                      "const": "habit"
                    },
                    "start_value": {
                      "type": "number",
                      "const": 0
                    },
                    "target_value": {
                      "type": "number",
                      "const": 100
                    },
                    "unit": {
                      "type": "null"
                    },
                    "cadence": {
                      "type": "string",
                      "enum": [
                        "weekly",
                        "monthly"
                      ],
                      "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                    },
                    "per": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 9007199254740991
                    },
                    "since": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "in_progress",
                        "completed"
                      ],
                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "short_code": {
                      "type": "string",
                      "minLength": 1
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "current_value": {
                      "type": "number",
                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                    },
                    "boundary_value": {
                      "type": "number"
                    },
                    "progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "boundary_progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "movement": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "movement_pp": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "evidence_count": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "last_recorded_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "habit_expected_since_boundary": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "habit_logs_since_boundary": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "performance_share": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "objective_id",
                    "title",
                    "description",
                    "metric_type",
                    "start_value",
                    "target_value",
                    "unit",
                    "cadence",
                    "per",
                    "since",
                    "status",
                    "created_at",
                    "short_code",
                    "url",
                    "current_value",
                    "boundary_value",
                    "progress_pct",
                    "boundary_progress_pct",
                    "movement",
                    "movement_pp",
                    "evidence_count",
                    "last_recorded_at",
                    "habit_expected_since_boundary",
                    "habit_logs_since_boundary",
                    "performance_share"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "objective_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "metric_type": {
                      "type": "string",
                      "const": "performance"
                    },
                    "start_value": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                    },
                    "target_value": {
                      "type": "number"
                    },
                    "unit": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Unit. Used by Number and Performance results."
                    },
                    "cadence": {
                      "type": "null"
                    },
                    "per": {
                      "type": "null"
                    },
                    "since": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "in_progress",
                        "completed"
                      ],
                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "short_code": {
                      "type": "string",
                      "minLength": 1
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "current_value": {
                      "type": "number",
                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                    },
                    "boundary_value": {
                      "type": "number"
                    },
                    "progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "boundary_progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "movement": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "movement_pp": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "evidence_count": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "last_recorded_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "habit_expected_since_boundary": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "habit_logs_since_boundary": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "performance_share": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "objective_id",
                    "title",
                    "description",
                    "metric_type",
                    "start_value",
                    "target_value",
                    "unit",
                    "cadence",
                    "per",
                    "since",
                    "status",
                    "created_at",
                    "short_code",
                    "url",
                    "current_value",
                    "boundary_value",
                    "progress_pct",
                    "boundary_progress_pct",
                    "movement",
                    "movement_pp",
                    "evidence_count",
                    "last_recorded_at",
                    "habit_expected_since_boundary",
                    "habit_logs_since_boundary",
                    "performance_share"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "results.list",
          "service": "results.list",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "result_read",
          "collection": "results",
          "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
          "operation": "list",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "results.list"
          ],
          "gap": null,
          "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters."
        }
      ]
    },
    {
      "path": "results.get",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "results": "read",
        "cycles": "read",
        "objectives": "read",
        "result_logs": "read",
        "habit_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#getResult",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "result": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "number"
                  },
                  "start_value": {
                    "type": "number"
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Unit. Used by Number and Performance results."
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "null"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                  },
                  "boundary_value": {
                    "type": "number"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "percentage"
                  },
                  "start_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "target_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "unit": {
                    "type": "null"
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "null"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "boundary_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "milestone"
                  },
                  "start_value": {
                    "type": "number",
                    "const": 0
                  },
                  "target_value": {
                    "type": "number",
                    "const": 1
                  },
                  "unit": {
                    "type": "null"
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "null"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 0
                      },
                      {
                        "type": "number",
                        "const": 1
                      }
                    ]
                  },
                  "boundary_value": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 0
                      },
                      {
                        "type": "number",
                        "const": 1
                      }
                    ]
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "habit"
                  },
                  "start_value": {
                    "type": "number",
                    "const": 0
                  },
                  "target_value": {
                    "type": "number",
                    "const": 100
                  },
                  "unit": {
                    "type": "null"
                  },
                  "cadence": {
                    "type": "string",
                    "enum": [
                      "weekly",
                      "monthly"
                    ],
                    "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                  },
                  "per": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                  },
                  "boundary_value": {
                    "type": "number"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "performance"
                  },
                  "start_value": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Unit. Used by Number and Performance results."
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                  },
                  "boundary_value": {
                    "type": "number"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              }
            ]
          },
          "parents": {
            "type": "object",
            "properties": {
              "cycle": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "intention": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                      },
                      "start_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Starts."
                      },
                      "end_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Ends."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "active",
                          "archived"
                        ]
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "achievement_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                      },
                      "time_gone_pct": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100,
                        "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                      },
                      "length_weeks": {
                        "type": "integer",
                        "minimum": -9007199254740991,
                        "maximum": 9007199254740991,
                        "description": "UI label: Length, in weeks; derived from Starts and Ends."
                      }
                    },
                    "required": [
                      "id",
                      "intention",
                      "start_at",
                      "end_at",
                      "status",
                      "created_at",
                      "url",
                      "achievement_pct",
                      "time_gone_pct",
                      "length_weeks"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "objectives": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "cycle_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "deadline_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Deadline; null when no deadline has been set."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "on_track",
                            "off_track",
                            "completed"
                          ],
                          "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Progress. Derived from measurable results, independently of Status."
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Historical progress at the resolved last-session boundary; not current Progress."
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "cycle_id",
                        "title",
                        "description",
                        "deadline_at",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement_pp"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "cycle",
              "objectives"
            ],
            "additionalProperties": false
          },
          "result_logs": {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "result_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "comment": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "recorded_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "result_id",
                    "value",
                    "comment",
                    "session_id",
                    "recorded_at"
                  ],
                  "additionalProperties": false,
                  "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor"
            ],
            "additionalProperties": false
          },
          "habit_logs": {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "result_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "day": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "result_id",
                    "day",
                    "session_id",
                    "created_at"
                  ],
                  "additionalProperties": false,
                  "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor"
            ],
            "additionalProperties": false
          },
          "trend": {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "value"
                        },
                        "at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "value": {
                          "type": "number"
                        },
                        "pace": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "kind",
                        "at",
                        "value",
                        "pace"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "habit"
                        },
                        "from": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "to": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "actual": {
                          "type": "integer",
                          "minimum": -9007199254740991,
                          "maximum": 9007199254740991
                        },
                        "expected": {
                          "type": "number"
                        },
                        "expected_full": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "kind",
                        "from",
                        "to",
                        "actual",
                        "expected",
                        "expected_full"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "performance"
                        },
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "value": {
                          "type": "number"
                        },
                        "target": {
                          "type": "number"
                        },
                        "gap": {
                          "type": "number"
                        },
                        "share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "at",
                        "value",
                        "target",
                        "gap",
                        "share"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor"
            ],
            "additionalProperties": false
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "result",
          "parents",
          "result_logs",
          "habit_logs",
          "trend",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "results.get",
          "service": "results.get",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "result_read",
          "collection": "results",
          "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
          "operation": "get",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "results.get"
          ],
          "gap": null,
          "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters."
        }
      ]
    },
    {
      "path": "results.update",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "results": "write",
        "cycles": "read",
        "objectives": "read",
        "result_logs": "read",
        "habit_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#updateResult",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "title": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "objective_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "metric_type": {
            "type": "string",
            "enum": [
              "number",
              "percentage",
              "milestone",
              "habit",
              "performance"
            ],
            "description": "UI label: Type. Number, Percentage, Milestone, Habit or Performance."
          },
          "target_value": {
            "type": "number"
          },
          "start_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "unit": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "cadence": {
            "type": "string",
            "enum": [
              "weekly",
              "monthly"
            ],
            "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
          },
          "per": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "UI label: Times per selected Cadence."
          },
          "since": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
          },
          "status": {
            "type": "string",
            "enum": [
              "in_progress",
              "completed"
            ],
            "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "parents": {
                "type": "object",
                "properties": {
                  "cycle": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "intention": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                          },
                          "start_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Starts."
                          },
                          "end_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Ends."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "archived"
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "achievement_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                          },
                          "time_gone_pct": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100,
                            "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                          },
                          "length_weeks": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991,
                            "description": "UI label: Length, in weeks; derived from Starts and Ends."
                          }
                        },
                        "required": [
                          "id",
                          "intention",
                          "start_at",
                          "end_at",
                          "status",
                          "created_at",
                          "url",
                          "achievement_pct",
                          "time_gone_pct",
                          "length_weeks"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "objectives": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "cycle_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "deadline_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Deadline; null when no deadline has been set."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "on_track",
                                "off_track",
                                "completed"
                              ],
                              "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Progress. Derived from measurable results, independently of Status."
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Historical progress at the resolved last-session boundary; not current Progress."
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "cycle_id",
                            "title",
                            "description",
                            "deadline_at",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement_pp"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "cycle",
                  "objectives"
                ],
                "additionalProperties": false
              },
              "result_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "value",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "habit_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "day": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "day",
                        "session_id",
                        "created_at"
                      ],
                      "additionalProperties": false,
                      "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "trend": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "value"
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "pace": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "at",
                            "value",
                            "pace"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "habit"
                            },
                            "from": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "to": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "actual": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            "expected": {
                              "type": "number"
                            },
                            "expected_full": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "from",
                            "to",
                            "actual",
                            "expected",
                            "expected_full"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "performance"
                            },
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "target": {
                              "type": "number"
                            },
                            "gap": {
                              "type": "number"
                            },
                            "share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "kind",
                            "id",
                            "at",
                            "value",
                            "target",
                            "gap",
                            "share"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "result",
              "parents",
              "result_logs",
              "habit_logs",
              "trend",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "results.update",
          "service": "results.update",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "result_write",
          "collection": "results",
          "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
          "operation": "update",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "results.update"
          ],
          "gap": null,
          "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters."
        }
      ]
    },
    {
      "path": "results.delete",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "delete",
      "tables": {
        "results": "delete"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#deleteResult",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "preview_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Server impact preview ID; trusted application approval must already exist."
          }
        },
        "required": [
          "id",
          "preview_id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "results.delete",
          "service": "results.delete",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "result_delete",
          "collection": "results",
          "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
          "operation": "commit",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "results.delete"
          ],
          "gap": null,
          "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters."
        }
      ]
    },
    {
      "path": "result_logs.create",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "result_logs": "write",
        "results": "read",
        "cycles": "read",
        "objectives": "read",
        "habit_logs": "read",
        "idempotency_keys": "write"
      },
      "external": null,
      "trusted_context": null,
      "retry": "API requires client-key replay; unkeyed MCP calls must inspect state after an uncertain outcome.",
      "emits": [
        {
          "event": "result_update_recorded",
          "when": "When numeric/performance evidence or a milestone flip is saved; not comment-only rows."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#createResultLog",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "value": {
                "type": "number"
              },
              "comment": {
                "type": "string",
                "minLength": 1
              },
              "idempotency_key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              }
            },
            "required": [
              "result_id",
              "idempotency_key"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "value": {
                "type": "number"
              },
              "comment": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "result_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "parents": {
                "type": "object",
                "properties": {
                  "cycle": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "intention": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                          },
                          "start_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Starts."
                          },
                          "end_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Ends."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "archived"
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "achievement_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                          },
                          "time_gone_pct": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100,
                            "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                          },
                          "length_weeks": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991,
                            "description": "UI label: Length, in weeks; derived from Starts and Ends."
                          }
                        },
                        "required": [
                          "id",
                          "intention",
                          "start_at",
                          "end_at",
                          "status",
                          "created_at",
                          "url",
                          "achievement_pct",
                          "time_gone_pct",
                          "length_weeks"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "objectives": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "cycle_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "deadline_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Deadline; null when no deadline has been set."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "on_track",
                                "off_track",
                                "completed"
                              ],
                              "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Progress. Derived from measurable results, independently of Status."
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Historical progress at the resolved last-session boundary; not current Progress."
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "cycle_id",
                            "title",
                            "description",
                            "deadline_at",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement_pp"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "cycle",
                  "objectives"
                ],
                "additionalProperties": false
              },
              "result_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "value",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "habit_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "day": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "day",
                        "session_id",
                        "created_at"
                      ],
                      "additionalProperties": false,
                      "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "trend": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "value"
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "pace": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "at",
                            "value",
                            "pace"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "habit"
                            },
                            "from": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "to": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "actual": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            "expected": {
                              "type": "number"
                            },
                            "expected_full": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "from",
                            "to",
                            "actual",
                            "expected",
                            "expected_full"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "performance"
                            },
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "target": {
                              "type": "number"
                            },
                            "gap": {
                              "type": "number"
                            },
                            "share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "kind",
                            "id",
                            "at",
                            "value",
                            "target",
                            "gap",
                            "share"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "result",
              "parents",
              "result_logs",
              "habit_logs",
              "trend",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "result_logs.create",
          "service": "result_logs.create",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "progress_record",
          "collection": "progress",
          "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
          "operation": "result",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "result_logs.create"
          ],
          "gap": null,
          "projection": "Dispatch result evidence, habit day/comment and action outcome to their existing shared operations; project the affected record and changed IDs."
        }
      ]
    },
    {
      "path": "result_logs.list",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "result_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#listResultLogs",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "result_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "result_id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "result_id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "comment": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "session_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "recorded_at": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                }
              },
              "required": [
                "id",
                "result_id",
                "value",
                "comment",
                "session_id",
                "recorded_at"
              ],
              "additionalProperties": false,
              "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "result_logs.list",
          "service": "result_logs.list",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "result_logs.clear_comment",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "result_logs": "write",
        "results": "read",
        "cycles": "read",
        "objectives": "read",
        "habit_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#clearResultLogComment",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "parents": {
                "type": "object",
                "properties": {
                  "cycle": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "intention": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                          },
                          "start_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Starts."
                          },
                          "end_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Ends."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "archived"
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "achievement_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                          },
                          "time_gone_pct": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100,
                            "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                          },
                          "length_weeks": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991,
                            "description": "UI label: Length, in weeks; derived from Starts and Ends."
                          }
                        },
                        "required": [
                          "id",
                          "intention",
                          "start_at",
                          "end_at",
                          "status",
                          "created_at",
                          "url",
                          "achievement_pct",
                          "time_gone_pct",
                          "length_weeks"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "objectives": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "cycle_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "deadline_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Deadline; null when no deadline has been set."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "on_track",
                                "off_track",
                                "completed"
                              ],
                              "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Progress. Derived from measurable results, independently of Status."
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Historical progress at the resolved last-session boundary; not current Progress."
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "cycle_id",
                            "title",
                            "description",
                            "deadline_at",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement_pp"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "cycle",
                  "objectives"
                ],
                "additionalProperties": false
              },
              "result_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "value",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "habit_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "day": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "day",
                        "session_id",
                        "created_at"
                      ],
                      "additionalProperties": false,
                      "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "trend": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "value"
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "pace": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "at",
                            "value",
                            "pace"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "habit"
                            },
                            "from": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "to": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "actual": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            "expected": {
                              "type": "number"
                            },
                            "expected_full": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "from",
                            "to",
                            "actual",
                            "expected",
                            "expected_full"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "performance"
                            },
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "target": {
                              "type": "number"
                            },
                            "gap": {
                              "type": "number"
                            },
                            "share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "kind",
                            "id",
                            "at",
                            "value",
                            "target",
                            "gap",
                            "share"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "result",
              "parents",
              "result_logs",
              "habit_logs",
              "trend",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "result_logs.clear_comment",
          "service": "result_logs.clear_comment",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "result_logs.delete",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "delete",
      "tables": {
        "result_logs": "delete",
        "results": "read",
        "cycles": "read",
        "objectives": "read",
        "habit_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#deleteResultLog",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "parents": {
                "type": "object",
                "properties": {
                  "cycle": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "intention": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                          },
                          "start_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Starts."
                          },
                          "end_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Ends."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "archived"
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "achievement_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                          },
                          "time_gone_pct": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100,
                            "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                          },
                          "length_weeks": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991,
                            "description": "UI label: Length, in weeks; derived from Starts and Ends."
                          }
                        },
                        "required": [
                          "id",
                          "intention",
                          "start_at",
                          "end_at",
                          "status",
                          "created_at",
                          "url",
                          "achievement_pct",
                          "time_gone_pct",
                          "length_weeks"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "objectives": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "cycle_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "deadline_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Deadline; null when no deadline has been set."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "on_track",
                                "off_track",
                                "completed"
                              ],
                              "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Progress. Derived from measurable results, independently of Status."
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Historical progress at the resolved last-session boundary; not current Progress."
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "cycle_id",
                            "title",
                            "description",
                            "deadline_at",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement_pp"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "cycle",
                  "objectives"
                ],
                "additionalProperties": false
              },
              "result_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "value",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "habit_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "day": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "day",
                        "session_id",
                        "created_at"
                      ],
                      "additionalProperties": false,
                      "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "trend": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "value"
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "pace": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "at",
                            "value",
                            "pace"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "habit"
                            },
                            "from": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "to": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "actual": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            "expected": {
                              "type": "number"
                            },
                            "expected_full": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "from",
                            "to",
                            "actual",
                            "expected",
                            "expected_full"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "performance"
                            },
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "target": {
                              "type": "number"
                            },
                            "gap": {
                              "type": "number"
                            },
                            "share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "kind",
                            "id",
                            "at",
                            "value",
                            "target",
                            "gap",
                            "share"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "result",
              "parents",
              "result_logs",
              "habit_logs",
              "trend",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "result_logs.delete",
          "service": "result_logs.delete",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "habit_logs.set",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "habit_logs": "write",
        "results": "read",
        "cycles": "read",
        "objectives": "read",
        "result_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Repeated desired day state is safe; a comment is evidence and must not be blindly repeated.",
      "emits": [
        {
          "event": "result_update_recorded",
          "when": "When a habit mark/unmark changes recorded progress; not comment-only changes or replay."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#setHabitLog",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "comment": {
            "description": "Optional evidence comment saved atomically with the requested habit day state.",
            "type": "string",
            "minLength": 1
          },
          "result_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "day": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
          },
          "marked": {
            "type": "boolean",
            "description": "Desired calendar state: true marks the day; false unmarks it. Not an append-only history event."
          }
        },
        "required": [
          "result_id",
          "day",
          "marked"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "parents": {
                "type": "object",
                "properties": {
                  "cycle": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "intention": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                          },
                          "start_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Starts."
                          },
                          "end_at": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "UI label: Ends."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "active",
                              "archived"
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "achievement_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                          },
                          "time_gone_pct": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 100,
                            "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                          },
                          "length_weeks": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991,
                            "description": "UI label: Length, in weeks; derived from Starts and Ends."
                          }
                        },
                        "required": [
                          "id",
                          "intention",
                          "start_at",
                          "end_at",
                          "status",
                          "created_at",
                          "url",
                          "achievement_pct",
                          "time_gone_pct",
                          "length_weeks"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "objectives": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "cycle_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "deadline_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Deadline; null when no deadline has been set."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "on_track",
                                "off_track",
                                "completed"
                              ],
                              "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Progress. Derived from measurable results, independently of Status."
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Historical progress at the resolved last-session boundary; not current Progress."
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "cycle_id",
                            "title",
                            "description",
                            "deadline_at",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement_pp"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "cycle",
                  "objectives"
                ],
                "additionalProperties": false
              },
              "result_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "value",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "habit_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "day": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "day",
                        "session_id",
                        "created_at"
                      ],
                      "additionalProperties": false,
                      "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "trend": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "value"
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "pace": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "at",
                            "value",
                            "pace"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "habit"
                            },
                            "from": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "to": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "actual": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            "expected": {
                              "type": "number"
                            },
                            "expected_full": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "kind",
                            "from",
                            "to",
                            "actual",
                            "expected",
                            "expected_full"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "const": "performance"
                            },
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "value": {
                              "type": "number"
                            },
                            "target": {
                              "type": "number"
                            },
                            "gap": {
                              "type": "number"
                            },
                            "share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "kind",
                            "id",
                            "at",
                            "value",
                            "target",
                            "gap",
                            "share"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "result",
              "parents",
              "result_logs",
              "habit_logs",
              "trend",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "habit_logs.set",
          "service": "habit_logs.set",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "progress_record",
          "collection": "progress",
          "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
          "operation": "habit",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "habit_logs.set"
          ],
          "gap": null,
          "projection": "Dispatch result evidence, habit day/comment and action outcome to their existing shared operations; project the affected record and changed IDs."
        }
      ]
    },
    {
      "path": "habit_logs.list",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "habit_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F4-results.md",
      "source": "packages/core/src/features/results/service.contract.ts#listHabitLogs",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "result_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "from": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
          },
          "to": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
          }
        },
        "required": [
          "result_id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "result_id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "day": {
                  "type": "string",
                  "format": "date",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                  "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                },
                "session_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                }
              },
              "required": [
                "id",
                "result_id",
                "day",
                "session_id",
                "created_at"
              ],
              "additionalProperties": false,
              "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "habit_logs.list",
          "service": "habit_logs.list",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "actions.history",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "actions": "read",
        "action_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F5-actions.md",
      "source": "packages/core/src/features/actions/service.contract.ts#readActionHistory",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "action_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "window": {
            "type": "object",
            "properties": {
              "since": {
                "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  },
                  {
                    "type": "string",
                    "enum": [
                      "last_session",
                      "cycle_start"
                    ]
                  }
                ]
              },
              "until": {
                "description": "Exclusive upper bound; default is the server time captured on the first page.",
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                ]
              }
            },
            "additionalProperties": false
          }
        },
        "required": [
          "action_id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "action_id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "open",
                    "in_progress",
                    "done"
                  ],
                  "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                },
                "comment": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "session_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "recorded_at": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                }
              },
              "required": [
                "id",
                "action_id",
                "status",
                "comment",
                "session_id",
                "recorded_at"
              ],
              "additionalProperties": false,
              "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "action_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "window": {
            "type": "object",
            "properties": {
              "since": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "until": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              }
            },
            "required": [
              "since",
              "until"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "items",
          "next_cursor",
          "action_id",
          "window"
        ],
        "additionalProperties": false
      },
      "api": [],
      "mcp": [
        {
          "tool": "action_read",
          "collection": "actions",
          "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
          "operation": "history",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "actions.history"
          ],
          "gap": null,
          "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window."
        }
      ]
    },
    {
      "path": "actions.preview_deletion",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "actions": "read",
        "action_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Preview does not authorize deletion. Commit rechecks actor, target, impact, expiry and application approval; incomplete impact fails closed.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F5-actions.md",
      "source": "packages/core/src/features/actions/service.contract.ts#previewActionDeletion",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "const": "preview"
          },
          "preview_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "target": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "title"
            ],
            "additionalProperties": false
          },
          "deleted": {
            "type": "object",
            "properties": {
              "actions": {
                "type": "number",
                "const": 1
              },
              "action_logs": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "actions",
              "action_logs"
            ],
            "additionalProperties": false
          },
          "approval": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "required"
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "status",
              "url"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "operation",
          "preview_id",
          "expires_at",
          "target",
          "deleted",
          "approval"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "actions.preview_deletion",
          "service": "actions.preview_deletion",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "action_delete",
          "collection": "actions",
          "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
          "operation": "preview",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "actions.preview_deletion"
          ],
          "gap": null,
          "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window."
        }
      ]
    },
    {
      "path": "actions.create",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "actions": "write",
        "cycles": "read",
        "objectives": "read",
        "sessions": "read",
        "action_logs": "read",
        "idempotency_keys": "write"
      },
      "external": null,
      "trusted_context": null,
      "retry": "API requires client-key replay; unkeyed MCP calls must inspect state after an uncertain outcome.",
      "emits": [
        {
          "event": "action_created",
          "when": "After durable creation; no replay duplicate."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F5-actions.md",
      "source": "packages/core/src/features/actions/service.contract.ts#createAction",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "title": {
                "type": "string"
              },
              "due_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "idempotency_key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              }
            },
            "required": [
              "title",
              "due_at",
              "idempotency_key"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "title": {
                "type": "string"
              },
              "due_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "title",
              "due_at"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "action": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "done"
                    ],
                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                  },
                  "sort_order": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Drag order within an action group; not a progress status."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "overdue": {
                    "type": "boolean"
                  },
                  "done_since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "objective_id",
                  "title",
                  "description",
                  "due_at",
                  "status",
                  "sort_order",
                  "session_id",
                  "created_at",
                  "url",
                  "overdue",
                  "done_since_boundary"
                ],
                "additionalProperties": false
              },
              "cycle": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "intention": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                  },
                  "start_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Starts."
                  },
                  "end_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Ends."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "achievement_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                  },
                  "time_gone_pct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                  },
                  "length_weeks": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "UI label: Length, in weeks; derived from Starts and Ends."
                  }
                },
                "required": [
                  "id",
                  "intention",
                  "start_at",
                  "end_at",
                  "status",
                  "created_at",
                  "url",
                  "achievement_pct",
                  "time_gone_pct",
                  "length_weeks"
                ],
                "additionalProperties": false
              },
              "objective": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "cycle_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "deadline_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Deadline; null when no deadline has been set."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "on_track",
                          "off_track",
                          "completed"
                        ],
                        "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Progress. Derived from measurable results, independently of Status."
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Historical progress at the resolved last-session boundary; not current Progress."
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "cycle_id",
                      "title",
                      "description",
                      "deadline_at",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement_pp"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "source_session": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "vendor": {
                        "type": "string",
                        "enum": [
                          "claude",
                          "openai"
                        ],
                        "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                      },
                      "source_url": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uri"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "External conversation link used by Open the conversation. Not the app detail URL."
                      },
                      "type": {
                        "anyOf": [
                          {
                            "type": "string",
                            "enum": [
                              "goal_setup",
                              "check_in",
                              "review",
                              "open_coaching"
                            ],
                            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "briefing_notes": {
                        "type": "string",
                        "description": "UI document: Briefing. Server-prepared coaching context."
                      },
                      "headline": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "One-line coaching-session summary used in session lists."
                      },
                      "summary_notes": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI document: Summary. Saved when the coaching session closes."
                      },
                      "started_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "ended_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                      },
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Internal app link to coaching session details; distinct from source_url."
                      },
                      "duration_minutes": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "actions_created": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "actions_reviewed": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "required": [
                      "id",
                      "vendor",
                      "source_url",
                      "type",
                      "briefing_notes",
                      "headline",
                      "summary_notes",
                      "started_at",
                      "ended_at",
                      "url",
                      "duration_minutes",
                      "actions_created",
                      "actions_reviewed"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "action_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "action_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "done"
                          ],
                          "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "action_id",
                        "status",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "action",
              "cycle",
              "objective",
              "source_session",
              "action_logs",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "actions.create",
          "service": "actions.create",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "action_write",
          "collection": "actions",
          "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
          "operation": "create",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "actions.create"
          ],
          "gap": null,
          "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window."
        }
      ]
    },
    {
      "path": "actions.list",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "actions": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F5-actions.md",
      "source": "packages/core/src/features/actions/service.contract.ts#listActions",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "cycle_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "objective_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "in_progress",
              "done"
            ],
            "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
          },
          "due_before": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
          },
          "outstanding": {
            "description": "Only open or in_progress actions; exclude done across every page.",
            "type": "boolean",
            "const": true
          },
          "session_id": {
            "description": "Filter actions created in this owned session; combine with cycle_id to select its cycle explicitly.",
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "overdue": {
            "description": "Only non-done actions before due_before; requires an explicit local cutoff date for stable briefing pagination.",
            "type": "boolean",
            "const": true
          }
        },
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "cycle_id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "objective_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "title": {
                  "type": "string"
                },
                "description": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "due_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "open",
                    "in_progress",
                    "done"
                  ],
                  "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                },
                "sort_order": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Drag order within an action group; not a progress status."
                },
                "session_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "overdue": {
                  "type": "boolean"
                },
                "done_since_boundary": {
                  "type": "boolean"
                }
              },
              "required": [
                "id",
                "cycle_id",
                "objective_id",
                "title",
                "description",
                "due_at",
                "status",
                "sort_order",
                "session_id",
                "created_at",
                "url",
                "overdue",
                "done_since_boundary"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "cycle_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor",
          "cycle_id"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "actions.list",
          "service": "actions.list",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "action_read",
          "collection": "actions",
          "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
          "operation": "list",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "actions.list"
          ],
          "gap": null,
          "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window."
        }
      ]
    },
    {
      "path": "actions.get",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "actions": "read",
        "cycles": "read",
        "objectives": "read",
        "sessions": "read",
        "action_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F5-actions.md",
      "source": "packages/core/src/features/actions/service.contract.ts#getAction",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "action": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "title": {
                "type": "string"
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "due_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "in_progress",
                  "done"
                ],
                "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
              },
              "sort_order": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Drag order within an action group; not a progress status."
              },
              "session_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "overdue": {
                "type": "boolean"
              },
              "done_since_boundary": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "cycle_id",
              "objective_id",
              "title",
              "description",
              "due_at",
              "status",
              "sort_order",
              "session_id",
              "created_at",
              "url",
              "overdue",
              "done_since_boundary"
            ],
            "additionalProperties": false
          },
          "cycle": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "intention": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
              },
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends."
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "achievement_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
              },
              "time_gone_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
              },
              "length_weeks": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "UI label: Length, in weeks; derived from Starts and Ends."
              }
            },
            "required": [
              "id",
              "intention",
              "start_at",
              "end_at",
              "status",
              "created_at",
              "url",
              "achievement_pct",
              "time_gone_pct",
              "length_weeks"
            ],
            "additionalProperties": false
          },
          "objective": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "deadline_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Deadline; null when no deadline has been set."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "on_track",
                      "off_track",
                      "completed"
                    ],
                    "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Progress. Derived from measurable results, independently of Status."
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Historical progress at the resolved last-session boundary; not current Progress."
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "title",
                  "description",
                  "deadline_at",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement_pp"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "source_session": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "vendor": {
                    "type": "string",
                    "enum": [
                      "claude",
                      "openai"
                    ],
                    "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                  },
                  "source_url": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uri"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "External conversation link used by Open the conversation. Not the app detail URL."
                  },
                  "type": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "goal_setup",
                          "check_in",
                          "review",
                          "open_coaching"
                        ],
                        "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "briefing_notes": {
                    "type": "string",
                    "description": "UI document: Briefing. Server-prepared coaching context."
                  },
                  "headline": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "One-line coaching-session summary used in session lists."
                  },
                  "summary_notes": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI document: Summary. Saved when the coaching session closes."
                  },
                  "started_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "ended_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Internal app link to coaching session details; distinct from source_url."
                  },
                  "duration_minutes": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "actions_created": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "actions_reviewed": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "id",
                  "vendor",
                  "source_url",
                  "type",
                  "briefing_notes",
                  "headline",
                  "summary_notes",
                  "started_at",
                  "ended_at",
                  "url",
                  "duration_minutes",
                  "actions_created",
                  "actions_reviewed"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "action_logs": {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "action_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "open",
                        "in_progress",
                        "done"
                      ],
                      "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                    },
                    "comment": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "recorded_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "action_id",
                    "status",
                    "comment",
                    "session_id",
                    "recorded_at"
                  ],
                  "additionalProperties": false,
                  "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor"
            ],
            "additionalProperties": false
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "action",
          "cycle",
          "objective",
          "source_session",
          "action_logs",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "actions.get",
          "service": "actions.get",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "action_read",
          "collection": "actions",
          "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
          "operation": "get",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "actions.get"
          ],
          "gap": null,
          "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window."
        }
      ]
    },
    {
      "path": "actions.update",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "actions": "write",
        "cycles": "read",
        "objectives": "read",
        "sessions": "read",
        "action_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F5-actions.md",
      "source": "packages/core/src/features/actions/service.contract.ts#updateAction",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "title": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "due_at": {
            "description": "New due date. Omit to preserve; a previously set date cannot be cleared. Web creation may initially have no date.",
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
          },
          "objective_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              {
                "type": "null"
              }
            ]
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "action": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "done"
                    ],
                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                  },
                  "sort_order": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Drag order within an action group; not a progress status."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "overdue": {
                    "type": "boolean"
                  },
                  "done_since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "objective_id",
                  "title",
                  "description",
                  "due_at",
                  "status",
                  "sort_order",
                  "session_id",
                  "created_at",
                  "url",
                  "overdue",
                  "done_since_boundary"
                ],
                "additionalProperties": false
              },
              "cycle": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "intention": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                  },
                  "start_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Starts."
                  },
                  "end_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Ends."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "achievement_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                  },
                  "time_gone_pct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                  },
                  "length_weeks": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "UI label: Length, in weeks; derived from Starts and Ends."
                  }
                },
                "required": [
                  "id",
                  "intention",
                  "start_at",
                  "end_at",
                  "status",
                  "created_at",
                  "url",
                  "achievement_pct",
                  "time_gone_pct",
                  "length_weeks"
                ],
                "additionalProperties": false
              },
              "objective": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "cycle_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "deadline_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Deadline; null when no deadline has been set."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "on_track",
                          "off_track",
                          "completed"
                        ],
                        "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Progress. Derived from measurable results, independently of Status."
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Historical progress at the resolved last-session boundary; not current Progress."
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "cycle_id",
                      "title",
                      "description",
                      "deadline_at",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement_pp"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "source_session": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "vendor": {
                        "type": "string",
                        "enum": [
                          "claude",
                          "openai"
                        ],
                        "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                      },
                      "source_url": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uri"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "External conversation link used by Open the conversation. Not the app detail URL."
                      },
                      "type": {
                        "anyOf": [
                          {
                            "type": "string",
                            "enum": [
                              "goal_setup",
                              "check_in",
                              "review",
                              "open_coaching"
                            ],
                            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "briefing_notes": {
                        "type": "string",
                        "description": "UI document: Briefing. Server-prepared coaching context."
                      },
                      "headline": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "One-line coaching-session summary used in session lists."
                      },
                      "summary_notes": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI document: Summary. Saved when the coaching session closes."
                      },
                      "started_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "ended_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                      },
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Internal app link to coaching session details; distinct from source_url."
                      },
                      "duration_minutes": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "actions_created": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "actions_reviewed": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "required": [
                      "id",
                      "vendor",
                      "source_url",
                      "type",
                      "briefing_notes",
                      "headline",
                      "summary_notes",
                      "started_at",
                      "ended_at",
                      "url",
                      "duration_minutes",
                      "actions_created",
                      "actions_reviewed"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "action_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "action_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "done"
                          ],
                          "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "action_id",
                        "status",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "action",
              "cycle",
              "objective",
              "source_session",
              "action_logs",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "actions.update",
          "service": "actions.update",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "action_write",
          "collection": "actions",
          "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
          "operation": "update",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "actions.update"
          ],
          "gap": null,
          "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window."
        }
      ]
    },
    {
      "path": "actions.reorder",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "actions": "write",
        "cycles": "read",
        "objectives": "read",
        "sessions": "read",
        "action_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F5-actions.md",
      "source": "packages/core/src/features/actions/service.contract.ts#reorderAction",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "sort_order": {
            "type": "number"
          }
        },
        "required": [
          "id",
          "sort_order"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "action": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "done"
                    ],
                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                  },
                  "sort_order": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Drag order within an action group; not a progress status."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "overdue": {
                    "type": "boolean"
                  },
                  "done_since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "objective_id",
                  "title",
                  "description",
                  "due_at",
                  "status",
                  "sort_order",
                  "session_id",
                  "created_at",
                  "url",
                  "overdue",
                  "done_since_boundary"
                ],
                "additionalProperties": false
              },
              "cycle": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "intention": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                  },
                  "start_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Starts."
                  },
                  "end_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Ends."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "achievement_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                  },
                  "time_gone_pct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                  },
                  "length_weeks": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "UI label: Length, in weeks; derived from Starts and Ends."
                  }
                },
                "required": [
                  "id",
                  "intention",
                  "start_at",
                  "end_at",
                  "status",
                  "created_at",
                  "url",
                  "achievement_pct",
                  "time_gone_pct",
                  "length_weeks"
                ],
                "additionalProperties": false
              },
              "objective": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "cycle_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "deadline_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Deadline; null when no deadline has been set."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "on_track",
                          "off_track",
                          "completed"
                        ],
                        "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Progress. Derived from measurable results, independently of Status."
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Historical progress at the resolved last-session boundary; not current Progress."
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "cycle_id",
                      "title",
                      "description",
                      "deadline_at",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement_pp"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "source_session": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "vendor": {
                        "type": "string",
                        "enum": [
                          "claude",
                          "openai"
                        ],
                        "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                      },
                      "source_url": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uri"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "External conversation link used by Open the conversation. Not the app detail URL."
                      },
                      "type": {
                        "anyOf": [
                          {
                            "type": "string",
                            "enum": [
                              "goal_setup",
                              "check_in",
                              "review",
                              "open_coaching"
                            ],
                            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "briefing_notes": {
                        "type": "string",
                        "description": "UI document: Briefing. Server-prepared coaching context."
                      },
                      "headline": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "One-line coaching-session summary used in session lists."
                      },
                      "summary_notes": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI document: Summary. Saved when the coaching session closes."
                      },
                      "started_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "ended_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                      },
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Internal app link to coaching session details; distinct from source_url."
                      },
                      "duration_minutes": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "actions_created": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "actions_reviewed": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "required": [
                      "id",
                      "vendor",
                      "source_url",
                      "type",
                      "briefing_notes",
                      "headline",
                      "summary_notes",
                      "started_at",
                      "ended_at",
                      "url",
                      "duration_minutes",
                      "actions_created",
                      "actions_reviewed"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "action_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "action_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "done"
                          ],
                          "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "action_id",
                        "status",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "action",
              "cycle",
              "objective",
              "source_session",
              "action_logs",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "actions.reorder",
          "service": "actions.reorder",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "actions.delete",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "delete",
      "tables": {
        "actions": "delete"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F5-actions.md",
      "source": "packages/core/src/features/actions/service.contract.ts#deleteAction",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "preview_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Server impact preview ID; trusted application approval must already exist."
          }
        },
        "required": [
          "id",
          "preview_id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "actions.delete",
          "service": "actions.delete",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "action_delete",
          "collection": "actions",
          "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
          "operation": "commit",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "actions.delete"
          ],
          "gap": null,
          "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window."
        }
      ]
    },
    {
      "path": "action_logs.create",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "action_logs": "write",
        "actions": "write",
        "cycles": "read",
        "objectives": "read",
        "sessions": "read",
        "idempotency_keys": "write"
      },
      "external": null,
      "trusted_context": null,
      "retry": "API requires client-key replay; unkeyed MCP calls must inspect state after an uncertain outcome.",
      "emits": [
        {
          "event": "action_status_changed",
          "when": "For each persisted log, including repeat status with comment; not receipt replay."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F5-actions.md",
      "source": "packages/core/src/features/actions/service.contract.ts#createActionLog",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "in_progress",
                  "done"
                ],
                "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
              },
              "comment": {
                "type": "string",
                "minLength": 1
              },
              "idempotency_key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              }
            },
            "required": [
              "action_id",
              "status",
              "idempotency_key"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "in_progress",
                  "done"
                ],
                "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
              },
              "comment": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "action_id",
              "status"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "action": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "done"
                    ],
                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                  },
                  "sort_order": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Drag order within an action group; not a progress status."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "overdue": {
                    "type": "boolean"
                  },
                  "done_since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "objective_id",
                  "title",
                  "description",
                  "due_at",
                  "status",
                  "sort_order",
                  "session_id",
                  "created_at",
                  "url",
                  "overdue",
                  "done_since_boundary"
                ],
                "additionalProperties": false
              },
              "cycle": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "intention": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                  },
                  "start_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Starts."
                  },
                  "end_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Ends."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "achievement_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                  },
                  "time_gone_pct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                  },
                  "length_weeks": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "UI label: Length, in weeks; derived from Starts and Ends."
                  }
                },
                "required": [
                  "id",
                  "intention",
                  "start_at",
                  "end_at",
                  "status",
                  "created_at",
                  "url",
                  "achievement_pct",
                  "time_gone_pct",
                  "length_weeks"
                ],
                "additionalProperties": false
              },
              "objective": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "cycle_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "deadline_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Deadline; null when no deadline has been set."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "on_track",
                          "off_track",
                          "completed"
                        ],
                        "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Progress. Derived from measurable results, independently of Status."
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Historical progress at the resolved last-session boundary; not current Progress."
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "cycle_id",
                      "title",
                      "description",
                      "deadline_at",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement_pp"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "source_session": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "vendor": {
                        "type": "string",
                        "enum": [
                          "claude",
                          "openai"
                        ],
                        "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                      },
                      "source_url": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uri"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "External conversation link used by Open the conversation. Not the app detail URL."
                      },
                      "type": {
                        "anyOf": [
                          {
                            "type": "string",
                            "enum": [
                              "goal_setup",
                              "check_in",
                              "review",
                              "open_coaching"
                            ],
                            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "briefing_notes": {
                        "type": "string",
                        "description": "UI document: Briefing. Server-prepared coaching context."
                      },
                      "headline": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "One-line coaching-session summary used in session lists."
                      },
                      "summary_notes": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI document: Summary. Saved when the coaching session closes."
                      },
                      "started_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "ended_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                      },
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Internal app link to coaching session details; distinct from source_url."
                      },
                      "duration_minutes": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "actions_created": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "actions_reviewed": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "required": [
                      "id",
                      "vendor",
                      "source_url",
                      "type",
                      "briefing_notes",
                      "headline",
                      "summary_notes",
                      "started_at",
                      "ended_at",
                      "url",
                      "duration_minutes",
                      "actions_created",
                      "actions_reviewed"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "action_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "action_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "done"
                          ],
                          "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "action_id",
                        "status",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "action",
              "cycle",
              "objective",
              "source_session",
              "action_logs",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "action_logs.create",
          "service": "action_logs.create",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "progress_record",
          "collection": "progress",
          "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
          "operation": "action",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "action_logs.create"
          ],
          "gap": null,
          "projection": "Dispatch result evidence, habit day/comment and action outcome to their existing shared operations; project the affected record and changed IDs."
        }
      ]
    },
    {
      "path": "action_logs.list",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "action_logs": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F5-actions.md",
      "source": "packages/core/src/features/actions/service.contract.ts#listActionLogs",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "action_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "action_id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "action_id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "open",
                    "in_progress",
                    "done"
                  ],
                  "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                },
                "comment": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "session_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "recorded_at": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                }
              },
              "required": [
                "id",
                "action_id",
                "status",
                "comment",
                "session_id",
                "recorded_at"
              ],
              "additionalProperties": false,
              "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "action_logs.list",
          "service": "action_logs.list",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "action_logs.clear_comment",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "action_logs": "write",
        "actions": "read",
        "cycles": "read",
        "objectives": "read",
        "sessions": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F5-actions.md",
      "source": "packages/core/src/features/actions/service.contract.ts#clearActionLogComment",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "action": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "done"
                    ],
                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                  },
                  "sort_order": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Drag order within an action group; not a progress status."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "overdue": {
                    "type": "boolean"
                  },
                  "done_since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "objective_id",
                  "title",
                  "description",
                  "due_at",
                  "status",
                  "sort_order",
                  "session_id",
                  "created_at",
                  "url",
                  "overdue",
                  "done_since_boundary"
                ],
                "additionalProperties": false
              },
              "cycle": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "intention": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                  },
                  "start_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Starts."
                  },
                  "end_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Ends."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "achievement_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                  },
                  "time_gone_pct": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                  },
                  "length_weeks": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991,
                    "description": "UI label: Length, in weeks; derived from Starts and Ends."
                  }
                },
                "required": [
                  "id",
                  "intention",
                  "start_at",
                  "end_at",
                  "status",
                  "created_at",
                  "url",
                  "achievement_pct",
                  "time_gone_pct",
                  "length_weeks"
                ],
                "additionalProperties": false
              },
              "objective": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "cycle_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "deadline_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Deadline; null when no deadline has been set."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "on_track",
                          "off_track",
                          "completed"
                        ],
                        "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Progress. Derived from measurable results, independently of Status."
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Historical progress at the resolved last-session boundary; not current Progress."
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "cycle_id",
                      "title",
                      "description",
                      "deadline_at",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement_pp"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "source_session": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "vendor": {
                        "type": "string",
                        "enum": [
                          "claude",
                          "openai"
                        ],
                        "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                      },
                      "source_url": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uri"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "External conversation link used by Open the conversation. Not the app detail URL."
                      },
                      "type": {
                        "anyOf": [
                          {
                            "type": "string",
                            "enum": [
                              "goal_setup",
                              "check_in",
                              "review",
                              "open_coaching"
                            ],
                            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "briefing_notes": {
                        "type": "string",
                        "description": "UI document: Briefing. Server-prepared coaching context."
                      },
                      "headline": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "One-line coaching-session summary used in session lists."
                      },
                      "summary_notes": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI document: Summary. Saved when the coaching session closes."
                      },
                      "started_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "ended_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                      },
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Internal app link to coaching session details; distinct from source_url."
                      },
                      "duration_minutes": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "actions_created": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "actions_reviewed": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "required": [
                      "id",
                      "vendor",
                      "source_url",
                      "type",
                      "briefing_notes",
                      "headline",
                      "summary_notes",
                      "started_at",
                      "ended_at",
                      "url",
                      "duration_minutes",
                      "actions_created",
                      "actions_reviewed"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "action_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "action_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "done"
                          ],
                          "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "action_id",
                        "status",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "action",
              "cycle",
              "objective",
              "source_session",
              "action_logs",
              "continuations"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "action_logs.clear_comment",
          "service": "action_logs.clear_comment",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "notes.preview_deletion",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "notes": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Preview does not authorize deletion. Commit rechecks actor, target, impact, expiry and application approval; incomplete impact fails closed.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F6-notes.md",
      "source": "packages/core/src/features/notes/service.contract.ts#previewNoteDeletion",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "const": "preview"
          },
          "preview_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "target": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "text": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "id",
              "text"
            ],
            "additionalProperties": false
          },
          "deleted": {
            "type": "object",
            "properties": {
              "notes": {
                "type": "number",
                "const": 1
              }
            },
            "required": [
              "notes"
            ],
            "additionalProperties": false
          },
          "approval": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "required"
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "status",
              "url"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "operation",
          "preview_id",
          "expires_at",
          "target",
          "deleted",
          "approval"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "notes.preview_deletion",
          "service": "notes.preview_deletion",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "note_delete",
          "collection": "notes",
          "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
          "operation": "preview",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "notes.preview_deletion"
          ],
          "gap": null,
          "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only."
        }
      ]
    },
    {
      "path": "notes.create",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "notes": "write",
        "idempotency_keys": "write"
      },
      "external": null,
      "trusted_context": null,
      "retry": "API requires client-key replay; unkeyed MCP calls must inspect state after an uncertain outcome.",
      "emits": [
        {
          "event": "note_created",
          "when": "After durable creation; not autosave updates or receipt replay."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F6-notes.md",
      "source": "packages/core/src/features/notes/service.contract.ts#addNote",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "minLength": 1
              },
              "idempotency_key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              }
            },
            "required": [
              "text",
              "idempotency_key"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "text"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "text": {
                "type": "string",
                "minLength": 1
              },
              "recorded_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "since_boundary": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "text",
              "recorded_at",
              "url",
              "since_boundary"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "notes.create",
          "service": "notes.create",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "note_write",
          "collection": "notes",
          "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
          "operation": "create",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "notes.create"
          ],
          "gap": null,
          "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only."
        }
      ]
    },
    {
      "path": "notes.update",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "notes": "write"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F6-notes.md",
      "source": "packages/core/src/features/notes/service.contract.ts#updateNote",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "text": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "id",
          "text"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "text": {
                "type": "string",
                "minLength": 1
              },
              "recorded_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "since_boundary": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "text",
              "recorded_at",
              "url",
              "since_boundary"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "notes.update",
          "service": "notes.update",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "note_write",
          "collection": "notes",
          "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
          "operation": "update",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "notes.update"
          ],
          "gap": null,
          "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only."
        }
      ]
    },
    {
      "path": "notes.list",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "notes": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F6-notes.md",
      "source": "packages/core/src/features/notes/service.contract.ts#listNotes",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "window": {
            "type": "object",
            "properties": {
              "since": {
                "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  },
                  {
                    "type": "string",
                    "enum": [
                      "last_session",
                      "cycle_start"
                    ]
                  }
                ]
              },
              "until": {
                "description": "Exclusive upper bound; default is the server time captured on the first page.",
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                ]
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "text": {
                  "type": "string",
                  "minLength": 1
                },
                "recorded_at": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "since_boundary": {
                  "type": "boolean"
                }
              },
              "required": [
                "id",
                "text",
                "recorded_at",
                "url",
                "since_boundary"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "window": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor",
          "window"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "notes.list",
          "service": "notes.list",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "note_read",
          "collection": "notes",
          "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
          "operation": "list",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "notes.list"
          ],
          "gap": null,
          "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only."
        }
      ]
    },
    {
      "path": "notes.get",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "notes": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F6-notes.md",
      "source": "packages/core/src/features/notes/service.contract.ts#getNote",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "text": {
            "type": "string",
            "minLength": 1
          },
          "recorded_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "since_boundary": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "text",
          "recorded_at",
          "url",
          "since_boundary"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "notes.get",
          "service": "notes.get",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "note_read",
          "collection": "notes",
          "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
          "operation": "get",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "notes.get"
          ],
          "gap": null,
          "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only."
        }
      ]
    },
    {
      "path": "notes.delete",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "delete",
      "tables": {
        "notes": "delete"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F6-notes.md",
      "source": "packages/core/src/features/notes/service.contract.ts#deleteNote",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "preview_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Server impact preview ID; trusted application approval must already exist."
          }
        },
        "required": [
          "id",
          "preview_id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "notes.delete",
          "service": "notes.delete",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "note_delete",
          "collection": "notes",
          "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
          "operation": "commit",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "notes.delete"
          ],
          "gap": null,
          "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only."
        }
      ]
    },
    {
      "path": "sessions.get_stored",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "sessions": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F7-sessions.md",
      "source": "packages/core/src/features/sessions/service.contract.ts#readStoredSession",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              {
                "type": "string",
                "const": "last_completed"
              }
            ],
            "description": "Exact session UUID, or last_completed for the most recently ended session; returns null when none exists."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "session": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "vendor": {
                    "type": "string",
                    "enum": [
                      "claude",
                      "openai"
                    ],
                    "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                  },
                  "source_url": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uri"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "External conversation link used by Open the conversation. Not the app detail URL."
                  },
                  "type": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "goal_setup",
                          "check_in",
                          "review",
                          "open_coaching"
                        ],
                        "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "briefing_notes": {
                    "type": "string",
                    "description": "UI document: Briefing. Server-prepared coaching context."
                  },
                  "headline": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "One-line coaching-session summary used in session lists."
                  },
                  "summary_notes": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI document: Summary. Saved when the coaching session closes."
                  },
                  "started_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "ended_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Internal app link to coaching session details; distinct from source_url."
                  },
                  "duration_minutes": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "actions_created": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "actions_reviewed": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "id",
                  "vendor",
                  "source_url",
                  "type",
                  "briefing_notes",
                  "headline",
                  "summary_notes",
                  "started_at",
                  "ended_at",
                  "url",
                  "duration_minutes",
                  "actions_created",
                  "actions_reviewed"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "boundary": {
            "type": "object",
            "properties": {
              "at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "session_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "source": {
                "type": "string",
                "enum": [
                  "session",
                  "cycle_start",
                  "none"
                ]
              }
            },
            "required": [
              "at",
              "session_id",
              "source"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "session",
          "boundary"
        ],
        "additionalProperties": false
      },
      "api": [],
      "mcp": [
        {
          "tool": "session_read",
          "collection": "sessions",
          "specification": "docs/feature-specs/F7-sessions.md#mcp-source-mapping--selected-target",
          "operation": "get",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "sessions.get_stored"
          ],
          "gap": null,
          "projection": "List omits documents and preserves resolved window/boundary; stored get preserves nullable session; start explicitly constructs the compact MCP briefing and supported-reader continuations; close preserves saved outcome."
        }
      ]
    },
    {
      "path": "sessions.start",
      "readiness": "contract-only",
      "access": "session-start",
      "effect": "write",
      "tables": {
        "sessions": "write",
        "user": "read",
        "cycles": "read",
        "objectives": "read",
        "results": "read",
        "actions": "read",
        "notes": "read"
      },
      "external": null,
      "trusted_context": "session-origin",
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [
        {
          "event": "session_started",
          "when": "Only when a new session is persisted; not existing-session reuse."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F7-sessions.md",
      "source": "packages/core/src/features/sessions/service.contract.ts#loadBriefing",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "force_new": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "access_state": {
                "type": "string",
                "const": "active"
              },
              "session": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "started_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "stale": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "started_at"
                ],
                "additionalProperties": false
              },
              "briefing_notes": {
                "type": "string"
              },
              "briefing": {
                "type": "object",
                "properties": {
                  "as_of": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "current": {
                    "type": "object",
                    "properties": {
                      "profile": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "name": {
                            "type": "string",
                            "description": "Chosen coaching/display name, used verbatim. Target UI prompt: What should we call you? Empty means unknown; no separate surname."
                          },
                          "about_me": {
                            "type": "string",
                            "description": "UI label: About me."
                          },
                          "timezone": {
                            "type": "string",
                            "minLength": 1,
                            "description": "UI label: Time zone. IANA zone used for calendar dates and boundaries."
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "about_me",
                          "timezone"
                        ],
                        "additionalProperties": false
                      },
                      "boundary": {
                        "type": "object",
                        "properties": {
                          "at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "session_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "session",
                              "cycle_start",
                              "none"
                            ]
                          }
                        },
                        "required": [
                          "at",
                          "session_id",
                          "source"
                        ],
                        "additionalProperties": false
                      },
                      "cycle_line": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "type": "string"
                              },
                              "time_gone_pct": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 100
                              }
                            },
                            "required": [
                              "range",
                              "time_gone_pct"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "cycles": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "intention": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                                },
                                "start_at": {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "UI label: Starts."
                                },
                                "end_at": {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "UI label: Ends."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "active",
                                    "archived"
                                  ]
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "achievement_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                                },
                                "time_gone_pct": {
                                  "type": "number",
                                  "minimum": 0,
                                  "maximum": 100,
                                  "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                                },
                                "length_weeks": {
                                  "type": "integer",
                                  "minimum": -9007199254740991,
                                  "maximum": 9007199254740991,
                                  "description": "UI label: Length, in weeks; derived from Starts and Ends."
                                }
                              },
                              "required": [
                                "id",
                                "intention",
                                "start_at",
                                "end_at",
                                "status",
                                "created_at",
                                "url",
                                "achievement_pct",
                                "time_gone_pct",
                                "length_weeks"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor"
                        ],
                        "additionalProperties": false
                      },
                      "cycle": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "intention": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                              },
                              "start_at": {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "UI label: Starts."
                              },
                              "end_at": {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "UI label: Ends."
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "active",
                                  "archived"
                                ]
                              },
                              "created_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "achievement_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                              },
                              "time_gone_pct": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 100,
                                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                              },
                              "length_weeks": {
                                "type": "integer",
                                "minimum": -9007199254740991,
                                "maximum": 9007199254740991,
                                "description": "UI label: Length, in weeks; derived from Starts and Ends."
                              }
                            },
                            "required": [
                              "id",
                              "intention",
                              "start_at",
                              "end_at",
                              "status",
                              "created_at",
                              "url",
                              "achievement_pct",
                              "time_gone_pct",
                              "length_weeks"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "objectives": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "cycle_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "deadline_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Deadline; null when no deadline has been set."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "on_track",
                                    "off_track",
                                    "completed"
                                  ],
                                  "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Progress. Derived from measurable results, independently of Status."
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "Historical progress at the resolved last-session boundary; not current Progress."
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "cycle_id",
                                "title",
                                "description",
                                "deadline_at",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement_pp"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor"
                        ],
                        "additionalProperties": false
                      },
                      "results": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "number"
                                    },
                                    "start_value": {
                                      "type": "number"
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "percentage"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "boundary_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "milestone"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 1
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "boundary_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "habit"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "string",
                                      "enum": [
                                        "weekly",
                                        "monthly"
                                      ],
                                      "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                    },
                                    "per": {
                                      "type": "integer",
                                      "exclusiveMinimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "performance"
                                    },
                                    "start_value": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                }
                              ]
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor"
                        ],
                        "additionalProperties": false
                      },
                      "actions": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "cycle_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "due_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "open",
                                    "in_progress",
                                    "done"
                                  ],
                                  "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                                },
                                "sort_order": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "Drag order within an action group; not a progress status."
                                },
                                "session_id": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "overdue": {
                                  "type": "boolean"
                                },
                                "done_since_boundary": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "id",
                                "cycle_id",
                                "objective_id",
                                "title",
                                "description",
                                "due_at",
                                "status",
                                "sort_order",
                                "session_id",
                                "created_at",
                                "url",
                                "overdue",
                                "done_since_boundary"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor"
                        ],
                        "additionalProperties": false
                      },
                      "notes": {
                        "type": "object",
                        "properties": {
                          "notes": {
                            "type": "object",
                            "properties": {
                              "items": {
                                "maxItems": 50,
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "text": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "recorded_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "since_boundary": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "text",
                                    "recorded_at",
                                    "url",
                                    "since_boundary"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "next_cursor": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "items",
                              "next_cursor"
                            ],
                            "additionalProperties": false
                          },
                          "selection": {
                            "type": "string",
                            "enum": [
                              "since_boundary",
                              "recent_fallback",
                              "selected",
                              "history"
                            ]
                          },
                          "total": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "notes",
                          "selection",
                          "total"
                        ],
                        "additionalProperties": false
                      },
                      "last_completed_session": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "vendor": {
                                "type": "string",
                                "enum": [
                                  "claude",
                                  "openai"
                                ],
                                "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                              },
                              "source_url": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "External conversation link used by Open the conversation. Not the app detail URL."
                              },
                              "type": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "enum": [
                                      "goal_setup",
                                      "check_in",
                                      "review",
                                      "open_coaching"
                                    ],
                                    "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "briefing_notes": {
                                "type": "string",
                                "description": "UI document: Briefing. Server-prepared coaching context."
                              },
                              "headline": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "One-line coaching-session summary used in session lists."
                              },
                              "summary_notes": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "UI document: Summary. Saved when the coaching session closes."
                              },
                              "started_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "ended_at": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                              },
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Internal app link to coaching session details; distinct from source_url."
                              },
                              "duration_minutes": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "actions_created": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "actions_reviewed": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              }
                            },
                            "required": [
                              "id",
                              "vendor",
                              "source_url",
                              "type",
                              "briefing_notes",
                              "headline",
                              "summary_notes",
                              "started_at",
                              "ended_at",
                              "url",
                              "duration_minutes",
                              "actions_created",
                              "actions_reviewed"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "selected": {
                        "type": "object",
                        "properties": {
                          "objective": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "cycle_id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "deadline_at": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "date",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "UI label: Deadline; null when no deadline has been set."
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "on_track",
                                      "off_track",
                                      "completed"
                                    ],
                                    "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                                  },
                                  "created_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  "short_code": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "url": {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  "progress_pct": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "UI label: Progress. Derived from measurable results, independently of Status."
                                  },
                                  "boundary_progress_pct": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "Historical progress at the resolved last-session boundary; not current Progress."
                                  },
                                  "movement_pp": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "cycle_id",
                                  "title",
                                  "description",
                                  "deadline_at",
                                  "status",
                                  "created_at",
                                  "short_code",
                                  "url",
                                  "progress_pct",
                                  "boundary_progress_pct",
                                  "movement_pp"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "result": {
                            "anyOf": [
                              {
                                "oneOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "metric_type": {
                                        "type": "string",
                                        "const": "number"
                                      },
                                      "start_value": {
                                        "type": "number"
                                      },
                                      "target_value": {
                                        "type": "number"
                                      },
                                      "unit": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ],
                                        "description": "UI label: Unit. Used by Number and Performance results."
                                      },
                                      "cadence": {
                                        "type": "null"
                                      },
                                      "per": {
                                        "type": "null"
                                      },
                                      "since": {
                                        "type": "null"
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "in_progress",
                                          "completed"
                                        ],
                                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                      },
                                      "created_at": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      "short_code": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "url": {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      "current_value": {
                                        "type": "number",
                                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                      },
                                      "boundary_value": {
                                        "type": "number"
                                      },
                                      "progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "boundary_progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement_pp": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "evidence_count": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "last_recorded_at": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_expected_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_logs_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "performance_share": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "objective_id",
                                      "title",
                                      "description",
                                      "metric_type",
                                      "start_value",
                                      "target_value",
                                      "unit",
                                      "cadence",
                                      "per",
                                      "since",
                                      "status",
                                      "created_at",
                                      "short_code",
                                      "url",
                                      "current_value",
                                      "boundary_value",
                                      "progress_pct",
                                      "boundary_progress_pct",
                                      "movement",
                                      "movement_pp",
                                      "evidence_count",
                                      "last_recorded_at",
                                      "habit_expected_since_boundary",
                                      "habit_logs_since_boundary",
                                      "performance_share"
                                    ],
                                    "additionalProperties": false
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "metric_type": {
                                        "type": "string",
                                        "const": "percentage"
                                      },
                                      "start_value": {
                                        "type": "number",
                                        "minimum": 0,
                                        "maximum": 100
                                      },
                                      "target_value": {
                                        "type": "number",
                                        "minimum": 0,
                                        "maximum": 100
                                      },
                                      "unit": {
                                        "type": "null"
                                      },
                                      "cadence": {
                                        "type": "null"
                                      },
                                      "per": {
                                        "type": "null"
                                      },
                                      "since": {
                                        "type": "null"
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "in_progress",
                                          "completed"
                                        ],
                                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                      },
                                      "created_at": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      "short_code": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "url": {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      "current_value": {
                                        "type": "number",
                                        "minimum": 0,
                                        "maximum": 100
                                      },
                                      "boundary_value": {
                                        "type": "number",
                                        "minimum": 0,
                                        "maximum": 100
                                      },
                                      "progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "boundary_progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement_pp": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "evidence_count": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "last_recorded_at": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_expected_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_logs_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "performance_share": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "objective_id",
                                      "title",
                                      "description",
                                      "metric_type",
                                      "start_value",
                                      "target_value",
                                      "unit",
                                      "cadence",
                                      "per",
                                      "since",
                                      "status",
                                      "created_at",
                                      "short_code",
                                      "url",
                                      "current_value",
                                      "boundary_value",
                                      "progress_pct",
                                      "boundary_progress_pct",
                                      "movement",
                                      "movement_pp",
                                      "evidence_count",
                                      "last_recorded_at",
                                      "habit_expected_since_boundary",
                                      "habit_logs_since_boundary",
                                      "performance_share"
                                    ],
                                    "additionalProperties": false
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "metric_type": {
                                        "type": "string",
                                        "const": "milestone"
                                      },
                                      "start_value": {
                                        "type": "number",
                                        "const": 0
                                      },
                                      "target_value": {
                                        "type": "number",
                                        "const": 1
                                      },
                                      "unit": {
                                        "type": "null"
                                      },
                                      "cadence": {
                                        "type": "null"
                                      },
                                      "per": {
                                        "type": "null"
                                      },
                                      "since": {
                                        "type": "null"
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "in_progress",
                                          "completed"
                                        ],
                                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                      },
                                      "created_at": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      "short_code": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "url": {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      "current_value": {
                                        "anyOf": [
                                          {
                                            "type": "number",
                                            "const": 0
                                          },
                                          {
                                            "type": "number",
                                            "const": 1
                                          }
                                        ]
                                      },
                                      "boundary_value": {
                                        "anyOf": [
                                          {
                                            "type": "number",
                                            "const": 0
                                          },
                                          {
                                            "type": "number",
                                            "const": 1
                                          }
                                        ]
                                      },
                                      "progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "boundary_progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement_pp": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "evidence_count": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "last_recorded_at": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_expected_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_logs_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "performance_share": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "objective_id",
                                      "title",
                                      "description",
                                      "metric_type",
                                      "start_value",
                                      "target_value",
                                      "unit",
                                      "cadence",
                                      "per",
                                      "since",
                                      "status",
                                      "created_at",
                                      "short_code",
                                      "url",
                                      "current_value",
                                      "boundary_value",
                                      "progress_pct",
                                      "boundary_progress_pct",
                                      "movement",
                                      "movement_pp",
                                      "evidence_count",
                                      "last_recorded_at",
                                      "habit_expected_since_boundary",
                                      "habit_logs_since_boundary",
                                      "performance_share"
                                    ],
                                    "additionalProperties": false
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "metric_type": {
                                        "type": "string",
                                        "const": "habit"
                                      },
                                      "start_value": {
                                        "type": "number",
                                        "const": 0
                                      },
                                      "target_value": {
                                        "type": "number",
                                        "const": 100
                                      },
                                      "unit": {
                                        "type": "null"
                                      },
                                      "cadence": {
                                        "type": "string",
                                        "enum": [
                                          "weekly",
                                          "monthly"
                                        ],
                                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                      },
                                      "per": {
                                        "type": "integer",
                                        "exclusiveMinimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "since": {
                                        "type": "string",
                                        "format": "date",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "in_progress",
                                          "completed"
                                        ],
                                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                      },
                                      "created_at": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      "short_code": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "url": {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      "current_value": {
                                        "type": "number",
                                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                      },
                                      "boundary_value": {
                                        "type": "number"
                                      },
                                      "progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "boundary_progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement_pp": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "evidence_count": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "last_recorded_at": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_expected_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_logs_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "performance_share": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "objective_id",
                                      "title",
                                      "description",
                                      "metric_type",
                                      "start_value",
                                      "target_value",
                                      "unit",
                                      "cadence",
                                      "per",
                                      "since",
                                      "status",
                                      "created_at",
                                      "short_code",
                                      "url",
                                      "current_value",
                                      "boundary_value",
                                      "progress_pct",
                                      "boundary_progress_pct",
                                      "movement",
                                      "movement_pp",
                                      "evidence_count",
                                      "last_recorded_at",
                                      "habit_expected_since_boundary",
                                      "habit_logs_since_boundary",
                                      "performance_share"
                                    ],
                                    "additionalProperties": false
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "metric_type": {
                                        "type": "string",
                                        "const": "performance"
                                      },
                                      "start_value": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ],
                                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                      },
                                      "target_value": {
                                        "type": "number"
                                      },
                                      "unit": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ],
                                        "description": "UI label: Unit. Used by Number and Performance results."
                                      },
                                      "cadence": {
                                        "type": "null"
                                      },
                                      "per": {
                                        "type": "null"
                                      },
                                      "since": {
                                        "type": "string",
                                        "format": "date",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "in_progress",
                                          "completed"
                                        ],
                                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                      },
                                      "created_at": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      "short_code": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "url": {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      "current_value": {
                                        "type": "number",
                                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                      },
                                      "boundary_value": {
                                        "type": "number"
                                      },
                                      "progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "boundary_progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement_pp": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "evidence_count": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "last_recorded_at": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_expected_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_logs_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "performance_share": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "objective_id",
                                      "title",
                                      "description",
                                      "metric_type",
                                      "start_value",
                                      "target_value",
                                      "unit",
                                      "cadence",
                                      "per",
                                      "since",
                                      "status",
                                      "created_at",
                                      "short_code",
                                      "url",
                                      "current_value",
                                      "boundary_value",
                                      "progress_pct",
                                      "boundary_progress_pct",
                                      "movement",
                                      "movement_pp",
                                      "evidence_count",
                                      "last_recorded_at",
                                      "habit_expected_since_boundary",
                                      "habit_logs_since_boundary",
                                      "performance_share"
                                    ],
                                    "additionalProperties": false
                                  }
                                ]
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "action": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "cycle_id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "objective_id": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "due_at": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "date",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "open",
                                      "in_progress",
                                      "done"
                                    ],
                                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                                  },
                                  "sort_order": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "Drag order within an action group; not a progress status."
                                  },
                                  "session_id": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "created_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  "url": {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  "overdue": {
                                    "type": "boolean"
                                  },
                                  "done_since_boundary": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "id",
                                  "cycle_id",
                                  "objective_id",
                                  "title",
                                  "description",
                                  "due_at",
                                  "status",
                                  "sort_order",
                                  "session_id",
                                  "created_at",
                                  "url",
                                  "overdue",
                                  "done_since_boundary"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "note": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "text": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "recorded_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  "url": {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  "since_boundary": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "id",
                                  "text",
                                  "recorded_at",
                                  "url",
                                  "since_boundary"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "session": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "vendor": {
                                    "type": "string",
                                    "enum": [
                                      "claude",
                                      "openai"
                                    ],
                                    "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                                  },
                                  "source_url": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "External conversation link used by Open the conversation. Not the app detail URL."
                                  },
                                  "type": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "enum": [
                                          "goal_setup",
                                          "check_in",
                                          "review",
                                          "open_coaching"
                                        ],
                                        "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "briefing_notes": {
                                    "type": "string",
                                    "description": "UI document: Briefing. Server-prepared coaching context."
                                  },
                                  "headline": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "One-line coaching-session summary used in session lists."
                                  },
                                  "summary_notes": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "UI document: Summary. Saved when the coaching session closes."
                                  },
                                  "started_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  "ended_at": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                                  },
                                  "url": {
                                    "type": "string",
                                    "format": "uri",
                                    "description": "Internal app link to coaching session details; distinct from source_url."
                                  },
                                  "duration_minutes": {
                                    "anyOf": [
                                      {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "actions_created": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  "actions_reviewed": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "id",
                                  "vendor",
                                  "source_url",
                                  "type",
                                  "briefing_notes",
                                  "headline",
                                  "summary_notes",
                                  "started_at",
                                  "ended_at",
                                  "url",
                                  "duration_minutes",
                                  "actions_created",
                                  "actions_reviewed"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "objective",
                          "result",
                          "action",
                          "note",
                          "session"
                        ],
                        "additionalProperties": false
                      },
                      "continuations": {
                        "type": "object",
                        "propertyNames": {
                          "type": "string",
                          "enum": [
                            "cycles",
                            "objectives",
                            "results",
                            "actions",
                            "notes",
                            "sessions",
                            "result_logs",
                            "habit_logs",
                            "action_logs",
                            "trend"
                          ]
                        },
                        "additionalProperties": {
                          "type": "string",
                          "minLength": 1
                        }
                      }
                    },
                    "required": [
                      "profile",
                      "boundary",
                      "cycle_line",
                      "cycles",
                      "cycle",
                      "objectives",
                      "results",
                      "actions",
                      "notes",
                      "last_completed_session",
                      "selected",
                      "continuations"
                    ],
                    "additionalProperties": false
                  },
                  "progress_by_type": {
                    "type": "object",
                    "properties": {
                      "objectives": {
                        "type": "object",
                        "properties": {
                          "on_track": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "off_track": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "completed": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "on_track",
                          "off_track",
                          "completed"
                        ],
                        "additionalProperties": false
                      },
                      "results": {
                        "type": "object",
                        "properties": {
                          "in_play": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "in_progress": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "completed": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "average_progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "in_play",
                          "in_progress",
                          "completed",
                          "average_progress_pct"
                        ],
                        "additionalProperties": false
                      },
                      "actions": {
                        "type": "object",
                        "properties": {
                          "open": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "in_progress": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "done": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "overdue": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "open",
                          "in_progress",
                          "done",
                          "overdue"
                        ],
                        "additionalProperties": false
                      },
                      "notes": {
                        "type": "object",
                        "properties": {
                          "total": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "since_boundary": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "total",
                          "since_boundary"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "objectives",
                      "results",
                      "actions",
                      "notes"
                    ],
                    "additionalProperties": false
                  },
                  "session_history": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 6,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "vendor": {
                              "type": "string",
                              "enum": [
                                "claude",
                                "openai"
                              ],
                              "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                            },
                            "source_url": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uri"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "External conversation link used by Open the conversation. Not the app detail URL."
                            },
                            "type": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "goal_setup",
                                    "check_in",
                                    "review",
                                    "open_coaching"
                                  ],
                                  "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "briefing_notes": {
                              "type": "string",
                              "description": "UI document: Briefing. Server-prepared coaching context."
                            },
                            "headline": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "One-line coaching-session summary used in session lists."
                            },
                            "summary_notes": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI document: Summary. Saved when the coaching session closes."
                            },
                            "started_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "ended_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                            },
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "Internal app link to coaching session details; distinct from source_url."
                            },
                            "duration_minutes": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "actions_created": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "actions_reviewed": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            }
                          },
                          "required": [
                            "id",
                            "vendor",
                            "source_url",
                            "type",
                            "briefing_notes",
                            "headline",
                            "summary_notes",
                            "started_at",
                            "ended_at",
                            "url",
                            "duration_minutes",
                            "actions_created",
                            "actions_reviewed"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "attention": {
                    "type": "object",
                    "properties": {
                      "overdue_actions": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "cycle_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "due_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "open",
                                    "in_progress",
                                    "done"
                                  ],
                                  "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                                },
                                "sort_order": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "Drag order within an action group; not a progress status."
                                },
                                "session_id": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "overdue": {
                                  "type": "boolean"
                                },
                                "done_since_boundary": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "id",
                                "cycle_id",
                                "objective_id",
                                "title",
                                "description",
                                "due_at",
                                "status",
                                "sort_order",
                                "session_id",
                                "created_at",
                                "url",
                                "overdue",
                                "done_since_boundary"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor"
                        ],
                        "additionalProperties": false
                      },
                      "never_updated_results": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "number"
                                    },
                                    "start_value": {
                                      "type": "number"
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "percentage"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "boundary_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "milestone"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 1
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "boundary_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "habit"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "string",
                                      "enum": [
                                        "weekly",
                                        "monthly"
                                      ],
                                      "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                    },
                                    "per": {
                                      "type": "integer",
                                      "exclusiveMinimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "performance"
                                    },
                                    "start_value": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                }
                              ]
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor"
                        ],
                        "additionalProperties": false
                      },
                      "silent_results": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "number"
                                    },
                                    "start_value": {
                                      "type": "number"
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "percentage"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "boundary_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "milestone"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 1
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "boundary_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "habit"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "string",
                                      "enum": [
                                        "weekly",
                                        "monthly"
                                      ],
                                      "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                    },
                                    "per": {
                                      "type": "integer",
                                      "exclusiveMinimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "performance"
                                    },
                                    "start_value": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                }
                              ]
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor"
                        ],
                        "additionalProperties": false
                      },
                      "unmarked_habits": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "number"
                                    },
                                    "start_value": {
                                      "type": "number"
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "percentage"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "boundary_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "milestone"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 1
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "boundary_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "habit"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "string",
                                      "enum": [
                                        "weekly",
                                        "monthly"
                                      ],
                                      "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                    },
                                    "per": {
                                      "type": "integer",
                                      "exclusiveMinimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "performance"
                                    },
                                    "start_value": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                }
                              ]
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "overdue_actions",
                      "never_updated_results",
                      "silent_results",
                      "unmarked_habits"
                    ],
                    "additionalProperties": false
                  },
                  "pace": {
                    "type": "string",
                    "enum": [
                      "ahead",
                      "behind",
                      "level",
                      "nothing_measurable"
                    ]
                  },
                  "next_due_action": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "cycle_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "objective_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "due_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "open",
                              "in_progress",
                              "done"
                            ],
                            "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                          },
                          "sort_order": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Drag order within an action group; not a progress status."
                          },
                          "session_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "overdue": {
                            "type": "boolean"
                          },
                          "done_since_boundary": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "id",
                          "cycle_id",
                          "objective_id",
                          "title",
                          "description",
                          "due_at",
                          "status",
                          "sort_order",
                          "session_id",
                          "created_at",
                          "url",
                          "overdue",
                          "done_since_boundary"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "as_of",
                  "current",
                  "progress_by_type",
                  "session_history",
                  "attention",
                  "pace",
                  "next_due_action"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "access_state",
              "session",
              "briefing_notes",
              "briefing"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "access_state": {
                "type": "string",
                "const": "unpaid"
              },
              "enablement": {
                "type": "object",
                "properties": {
                  "instruction": {
                    "type": "string"
                  },
                  "signup_url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "instruction",
                  "signup_url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "access_state",
              "enablement"
            ],
            "additionalProperties": false
          }
        ]
      },
      "api": [
        {
          "operation": "sessions.start",
          "service": "sessions.start",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "session_start",
          "collection": "sessions",
          "specification": "docs/feature-specs/F7-sessions.md#mcp-source-mapping--selected-target",
          "operation": "call",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "sessions.start"
          ],
          "gap": null,
          "projection": "List omits documents and preserves resolved window/boundary; stored get preserves nullable session; start explicitly constructs the compact MCP briefing and supported-reader continuations; close preserves saved outcome."
        }
      ]
    },
    {
      "path": "sessions.list",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "sessions": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F7-sessions.md",
      "source": "packages/core/src/features/sessions/service.contract.ts#listSessions",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cursor": {
            "type": "string",
            "minLength": 1
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "window": {
            "type": "object",
            "properties": {
              "since": {
                "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  },
                  {
                    "type": "string",
                    "enum": [
                      "last_session",
                      "cycle_start"
                    ]
                  }
                ]
              },
              "until": {
                "description": "Exclusive upper bound; default is the server time captured on the first page.",
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                ]
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "items": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                },
                "vendor": {
                  "type": "string",
                  "enum": [
                    "claude",
                    "openai"
                  ],
                  "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                },
                "source_url": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uri"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "External conversation link used by Open the conversation. Not the app detail URL."
                },
                "type": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "goal_setup",
                        "check_in",
                        "review",
                        "open_coaching"
                      ],
                      "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "briefing_notes": {
                  "type": "string",
                  "description": "UI document: Briefing. Server-prepared coaching context."
                },
                "headline": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "One-line coaching-session summary used in session lists."
                },
                "summary_notes": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "UI document: Summary. Saved when the coaching session closes."
                },
                "started_at": {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                "ended_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                },
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Internal app link to coaching session details; distinct from source_url."
                },
                "duration_minutes": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "actions_created": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "actions_reviewed": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                }
              },
              "required": [
                "id",
                "vendor",
                "source_url",
                "type",
                "briefing_notes",
                "headline",
                "summary_notes",
                "started_at",
                "ended_at",
                "url",
                "duration_minutes",
                "actions_created",
                "actions_reviewed"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "window": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "boundary": {
            "type": "object",
            "properties": {
              "at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "session_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "source": {
                "type": "string",
                "enum": [
                  "session",
                  "cycle_start",
                  "none"
                ]
              }
            },
            "required": [
              "at",
              "session_id",
              "source"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "items",
          "next_cursor",
          "window",
          "boundary"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "sessions.list",
          "service": "sessions.list",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "session_read",
          "collection": "sessions",
          "specification": "docs/feature-specs/F7-sessions.md#mcp-source-mapping--selected-target",
          "operation": "list",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "sessions.list"
          ],
          "gap": null,
          "projection": "List omits documents and preserves resolved window/boundary; stored get preserves nullable session; start explicitly constructs the compact MCP briefing and supported-reader continuations; close preserves saved outcome."
        }
      ]
    },
    {
      "path": "sessions.get",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "sessions": "read",
        "actions": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F7-sessions.md",
      "source": "packages/core/src/features/sessions/service.contract.ts#getSession",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "session": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "vendor": {
                "type": "string",
                "enum": [
                  "claude",
                  "openai"
                ],
                "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
              },
              "source_url": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uri"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "External conversation link used by Open the conversation. Not the app detail URL."
              },
              "type": {
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "goal_setup",
                      "check_in",
                      "review",
                      "open_coaching"
                    ],
                    "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "briefing_notes": {
                "type": "string",
                "description": "UI document: Briefing. Server-prepared coaching context."
              },
              "headline": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "One-line coaching-session summary used in session lists."
              },
              "summary_notes": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI document: Summary. Saved when the coaching session closes."
              },
              "started_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "ended_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Internal app link to coaching session details; distinct from source_url."
              },
              "duration_minutes": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "actions_created": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "actions_reviewed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "id",
              "vendor",
              "source_url",
              "type",
              "briefing_notes",
              "headline",
              "summary_notes",
              "started_at",
              "ended_at",
              "url",
              "duration_minutes",
              "actions_created",
              "actions_reviewed"
            ],
            "additionalProperties": false
          },
          "actions": {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "cycle_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "objective_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "due_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "open",
                        "in_progress",
                        "done"
                      ],
                      "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                    },
                    "sort_order": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Drag order within an action group; not a progress status."
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "overdue": {
                      "type": "boolean"
                    },
                    "done_since_boundary": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "id",
                    "cycle_id",
                    "objective_id",
                    "title",
                    "description",
                    "due_at",
                    "status",
                    "sort_order",
                    "session_id",
                    "created_at",
                    "url",
                    "overdue",
                    "done_since_boundary"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor"
            ],
            "additionalProperties": false
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "session",
          "actions",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "sessions.get",
          "service": "sessions.get",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "sessions.close",
      "readiness": "contract-only",
      "access": "entitled-write",
      "effect": "write",
      "tables": {
        "sessions": "write"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Return the originally saved closure on retry; never overwrite its summary.",
      "emits": [
        {
          "event": "session_summary_written",
          "when": "On the first successful close with summary; not replay or forced stale close."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F7-sessions.md",
      "source": "packages/core/src/features/sessions/service.contract.ts#closeSession",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "type": {
            "type": "string",
            "enum": [
              "goal_setup",
              "check_in",
              "review",
              "open_coaching"
            ],
            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
          },
          "headline": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "summary_notes": {
            "type": "string",
            "minLength": 1,
            "description": "UI document: Summary. Saved when closing the coaching session."
          }
        },
        "required": [
          "session_id",
          "type",
          "headline",
          "summary_notes"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "session": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "vendor": {
                "type": "string",
                "enum": [
                  "claude",
                  "openai"
                ],
                "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
              },
              "source_url": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uri"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "External conversation link used by Open the conversation. Not the app detail URL."
              },
              "type": {
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "goal_setup",
                      "check_in",
                      "review",
                      "open_coaching"
                    ],
                    "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "briefing_notes": {
                "type": "string",
                "description": "UI document: Briefing. Server-prepared coaching context."
              },
              "headline": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "One-line coaching-session summary used in session lists."
              },
              "summary_notes": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI document: Summary. Saved when the coaching session closes."
              },
              "started_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "ended_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Internal app link to coaching session details; distinct from source_url."
              },
              "duration_minutes": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "actions_created": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "actions_reviewed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "id",
              "vendor",
              "source_url",
              "type",
              "briefing_notes",
              "headline",
              "summary_notes",
              "started_at",
              "ended_at",
              "url",
              "duration_minutes",
              "actions_created",
              "actions_reviewed"
            ],
            "additionalProperties": false
          },
          "boundary_moved_to": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          }
        },
        "required": [
          "session",
          "boundary_moved_to"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "sessions.close",
          "service": "sessions.close",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "session_close",
          "collection": "sessions",
          "specification": "docs/feature-specs/F7-sessions.md#mcp-source-mapping--selected-target",
          "operation": "call",
          "binding": "planned",
          "mode": "direct",
          "readiness": "contract-only",
          "services": [
            "sessions.close"
          ],
          "gap": null,
          "projection": "List omits documents and preserves resolved window/boundary; stored get preserves nullable session; start explicitly constructs the compact MCP briefing and supported-reader continuations; close preserves saved outcome."
        }
      ]
    },
    {
      "path": "record.query",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "cycles": "read",
        "objectives": "read",
        "results": "read",
        "result_logs": "read",
        "habit_logs": "read",
        "actions": "read",
        "action_logs": "read",
        "notes": "read",
        "sessions": "read",
        "user": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F7-sessions.md",
      "source": "packages/core/src/features/record-query/service.contract.ts#queryRecord",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "filters": {
            "type": "object",
            "properties": {
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "objective_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "note_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "session_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "kinds": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "notes",
                    "sessions"
                  ]
                }
              }
            },
            "additionalProperties": false
          },
          "window": {
            "type": "object",
            "properties": {
              "since": {
                "anyOf": [
                  {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  },
                  {
                    "type": "string",
                    "enum": [
                      "last_session",
                      "cycle_start"
                    ]
                  }
                ]
              },
              "until": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "continuations": {
            "type": "object",
            "properties": {
              "cycles": {
                "type": "string",
                "minLength": 1
              },
              "objectives": {
                "type": "string",
                "minLength": 1
              },
              "results": {
                "type": "string",
                "minLength": 1
              },
              "actions": {
                "type": "string",
                "minLength": 1
              },
              "notes": {
                "type": "string",
                "minLength": 1
              },
              "sessions": {
                "type": "string",
                "minLength": 1
              },
              "result_logs": {
                "type": "string",
                "minLength": 1
              },
              "habit_logs": {
                "type": "string",
                "minLength": 1
              },
              "action_logs": {
                "type": "string",
                "minLength": 1
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "as_of": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          },
          "current": {
            "type": "object",
            "properties": {
              "profile": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "name": {
                    "type": "string",
                    "description": "Chosen coaching/display name, used verbatim. Target UI prompt: What should we call you? Empty means unknown; no separate surname."
                  },
                  "about_me": {
                    "type": "string",
                    "description": "UI label: About me."
                  },
                  "timezone": {
                    "type": "string",
                    "minLength": 1,
                    "description": "UI label: Time zone. IANA zone used for calendar dates and boundaries."
                  }
                },
                "required": [
                  "id",
                  "name",
                  "about_me",
                  "timezone"
                ],
                "additionalProperties": false
              },
              "boundary": {
                "type": "object",
                "properties": {
                  "at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "source": {
                    "type": "string",
                    "enum": [
                      "session",
                      "cycle_start",
                      "none"
                    ]
                  }
                },
                "required": [
                  "at",
                  "session_id",
                  "source"
                ],
                "additionalProperties": false
              },
              "cycle_line": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "range": {
                        "type": "string"
                      },
                      "time_gone_pct": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      }
                    },
                    "required": [
                      "range",
                      "time_gone_pct"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "cycles": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "intention": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                        },
                        "start_at": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "UI label: Starts."
                        },
                        "end_at": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "UI label: Ends."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "active",
                            "archived"
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "achievement_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                        },
                        "time_gone_pct": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100,
                          "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                        },
                        "length_weeks": {
                          "type": "integer",
                          "minimum": -9007199254740991,
                          "maximum": 9007199254740991,
                          "description": "UI label: Length, in weeks; derived from Starts and Ends."
                        }
                      },
                      "required": [
                        "id",
                        "intention",
                        "start_at",
                        "end_at",
                        "status",
                        "created_at",
                        "url",
                        "achievement_pct",
                        "time_gone_pct",
                        "length_weeks"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "cycle": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "intention": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                      },
                      "start_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Starts."
                      },
                      "end_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Ends."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "active",
                          "archived"
                        ]
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "achievement_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                      },
                      "time_gone_pct": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100,
                        "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                      },
                      "length_weeks": {
                        "type": "integer",
                        "minimum": -9007199254740991,
                        "maximum": 9007199254740991,
                        "description": "UI label: Length, in weeks; derived from Starts and Ends."
                      }
                    },
                    "required": [
                      "id",
                      "intention",
                      "start_at",
                      "end_at",
                      "status",
                      "created_at",
                      "url",
                      "achievement_pct",
                      "time_gone_pct",
                      "length_weeks"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "objectives": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "cycle_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "deadline_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Deadline; null when no deadline has been set."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "on_track",
                            "off_track",
                            "completed"
                          ],
                          "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Progress. Derived from measurable results, independently of Status."
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Historical progress at the resolved last-session boundary; not current Progress."
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "cycle_id",
                        "title",
                        "description",
                        "deadline_at",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement_pp"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "results": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "number"
                            },
                            "start_value": {
                              "type": "number"
                            },
                            "target_value": {
                              "type": "number"
                            },
                            "unit": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Unit. Used by Number and Performance results."
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "null"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                            },
                            "boundary_value": {
                              "type": "number"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "percentage"
                            },
                            "start_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "target_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "unit": {
                              "type": "null"
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "null"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "boundary_value": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "milestone"
                            },
                            "start_value": {
                              "type": "number",
                              "const": 0
                            },
                            "target_value": {
                              "type": "number",
                              "const": 1
                            },
                            "unit": {
                              "type": "null"
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "null"
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "anyOf": [
                                {
                                  "type": "number",
                                  "const": 0
                                },
                                {
                                  "type": "number",
                                  "const": 1
                                }
                              ]
                            },
                            "boundary_value": {
                              "anyOf": [
                                {
                                  "type": "number",
                                  "const": 0
                                },
                                {
                                  "type": "number",
                                  "const": 1
                                }
                              ]
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "habit"
                            },
                            "start_value": {
                              "type": "number",
                              "const": 0
                            },
                            "target_value": {
                              "type": "number",
                              "const": 100
                            },
                            "unit": {
                              "type": "null"
                            },
                            "cadence": {
                              "type": "string",
                              "enum": [
                                "weekly",
                                "monthly"
                              ],
                              "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                            },
                            "per": {
                              "type": "integer",
                              "exclusiveMinimum": 0,
                              "maximum": 9007199254740991
                            },
                            "since": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                            },
                            "boundary_value": {
                              "type": "number"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "objective_id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "metric_type": {
                              "type": "string",
                              "const": "performance"
                            },
                            "start_value": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                            },
                            "target_value": {
                              "type": "number"
                            },
                            "unit": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "UI label: Unit. Used by Number and Performance results."
                            },
                            "cadence": {
                              "type": "null"
                            },
                            "per": {
                              "type": "null"
                            },
                            "since": {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            "status": {
                              "type": "string",
                              "enum": [
                                "in_progress",
                                "completed"
                              ],
                              "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                            },
                            "created_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "short_code": {
                              "type": "string",
                              "minLength": 1
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "current_value": {
                              "type": "number",
                              "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                            },
                            "boundary_value": {
                              "type": "number"
                            },
                            "progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "boundary_progress_pct": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "movement_pp": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "evidence_count": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "last_recorded_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_expected_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "habit_logs_since_boundary": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "performance_share": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "id",
                            "objective_id",
                            "title",
                            "description",
                            "metric_type",
                            "start_value",
                            "target_value",
                            "unit",
                            "cadence",
                            "per",
                            "since",
                            "status",
                            "created_at",
                            "short_code",
                            "url",
                            "current_value",
                            "boundary_value",
                            "progress_pct",
                            "boundary_progress_pct",
                            "movement",
                            "movement_pp",
                            "evidence_count",
                            "last_recorded_at",
                            "habit_expected_since_boundary",
                            "habit_logs_since_boundary",
                            "performance_share"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "actions": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "cycle_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "due_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                              "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "done"
                          ],
                          "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                        },
                        "sort_order": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Drag order within an action group; not a progress status."
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "overdue": {
                          "type": "boolean"
                        },
                        "done_since_boundary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "cycle_id",
                        "objective_id",
                        "title",
                        "description",
                        "due_at",
                        "status",
                        "sort_order",
                        "session_id",
                        "created_at",
                        "url",
                        "overdue",
                        "done_since_boundary"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "notes": {
                "type": "object",
                "properties": {
                  "notes": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "text": {
                              "type": "string",
                              "minLength": 1
                            },
                            "recorded_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "since_boundary": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "id",
                            "text",
                            "recorded_at",
                            "url",
                            "since_boundary"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor"
                    ],
                    "additionalProperties": false
                  },
                  "selection": {
                    "type": "string",
                    "enum": [
                      "since_boundary",
                      "recent_fallback",
                      "selected",
                      "history"
                    ]
                  },
                  "total": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "notes",
                  "selection",
                  "total"
                ],
                "additionalProperties": false
              },
              "last_completed_session": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "vendor": {
                        "type": "string",
                        "enum": [
                          "claude",
                          "openai"
                        ],
                        "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                      },
                      "source_url": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uri"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "External conversation link used by Open the conversation. Not the app detail URL."
                      },
                      "type": {
                        "anyOf": [
                          {
                            "type": "string",
                            "enum": [
                              "goal_setup",
                              "check_in",
                              "review",
                              "open_coaching"
                            ],
                            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "briefing_notes": {
                        "type": "string",
                        "description": "UI document: Briefing. Server-prepared coaching context."
                      },
                      "headline": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "One-line coaching-session summary used in session lists."
                      },
                      "summary_notes": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI document: Summary. Saved when the coaching session closes."
                      },
                      "started_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "ended_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                      },
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Internal app link to coaching session details; distinct from source_url."
                      },
                      "duration_minutes": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "actions_created": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "actions_reviewed": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "required": [
                      "id",
                      "vendor",
                      "source_url",
                      "type",
                      "briefing_notes",
                      "headline",
                      "summary_notes",
                      "started_at",
                      "ended_at",
                      "url",
                      "duration_minutes",
                      "actions_created",
                      "actions_reviewed"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "selected": {
                "type": "object",
                "properties": {
                  "objective": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "cycle_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "deadline_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Deadline; null when no deadline has been set."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "on_track",
                              "off_track",
                              "completed"
                            ],
                            "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "short_code": {
                            "type": "string",
                            "minLength": 1
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Progress. Derived from measurable results, independently of Status."
                          },
                          "boundary_progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Historical progress at the resolved last-session boundary; not current Progress."
                          },
                          "movement_pp": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "cycle_id",
                          "title",
                          "description",
                          "deadline_at",
                          "status",
                          "created_at",
                          "short_code",
                          "url",
                          "progress_pct",
                          "boundary_progress_pct",
                          "movement_pp"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "result": {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "objective_id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "metric_type": {
                                "type": "string",
                                "const": "number"
                              },
                              "start_value": {
                                "type": "number"
                              },
                              "target_value": {
                                "type": "number"
                              },
                              "unit": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "UI label: Unit. Used by Number and Performance results."
                              },
                              "cadence": {
                                "type": "null"
                              },
                              "per": {
                                "type": "null"
                              },
                              "since": {
                                "type": "null"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "in_progress",
                                  "completed"
                                ],
                                "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                              },
                              "created_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "short_code": {
                                "type": "string",
                                "minLength": 1
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "current_value": {
                                "type": "number",
                                "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                              },
                              "boundary_value": {
                                "type": "number"
                              },
                              "progress_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "boundary_progress_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "movement": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "movement_pp": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "evidence_count": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "last_recorded_at": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "habit_expected_since_boundary": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "habit_logs_since_boundary": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "performance_share": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "objective_id",
                              "title",
                              "description",
                              "metric_type",
                              "start_value",
                              "target_value",
                              "unit",
                              "cadence",
                              "per",
                              "since",
                              "status",
                              "created_at",
                              "short_code",
                              "url",
                              "current_value",
                              "boundary_value",
                              "progress_pct",
                              "boundary_progress_pct",
                              "movement",
                              "movement_pp",
                              "evidence_count",
                              "last_recorded_at",
                              "habit_expected_since_boundary",
                              "habit_logs_since_boundary",
                              "performance_share"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "objective_id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "metric_type": {
                                "type": "string",
                                "const": "percentage"
                              },
                              "start_value": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 100
                              },
                              "target_value": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 100
                              },
                              "unit": {
                                "type": "null"
                              },
                              "cadence": {
                                "type": "null"
                              },
                              "per": {
                                "type": "null"
                              },
                              "since": {
                                "type": "null"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "in_progress",
                                  "completed"
                                ],
                                "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                              },
                              "created_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "short_code": {
                                "type": "string",
                                "minLength": 1
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "current_value": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 100
                              },
                              "boundary_value": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 100
                              },
                              "progress_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "boundary_progress_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "movement": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "movement_pp": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "evidence_count": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "last_recorded_at": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "habit_expected_since_boundary": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "habit_logs_since_boundary": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "performance_share": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "objective_id",
                              "title",
                              "description",
                              "metric_type",
                              "start_value",
                              "target_value",
                              "unit",
                              "cadence",
                              "per",
                              "since",
                              "status",
                              "created_at",
                              "short_code",
                              "url",
                              "current_value",
                              "boundary_value",
                              "progress_pct",
                              "boundary_progress_pct",
                              "movement",
                              "movement_pp",
                              "evidence_count",
                              "last_recorded_at",
                              "habit_expected_since_boundary",
                              "habit_logs_since_boundary",
                              "performance_share"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "objective_id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "metric_type": {
                                "type": "string",
                                "const": "milestone"
                              },
                              "start_value": {
                                "type": "number",
                                "const": 0
                              },
                              "target_value": {
                                "type": "number",
                                "const": 1
                              },
                              "unit": {
                                "type": "null"
                              },
                              "cadence": {
                                "type": "null"
                              },
                              "per": {
                                "type": "null"
                              },
                              "since": {
                                "type": "null"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "in_progress",
                                  "completed"
                                ],
                                "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                              },
                              "created_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "short_code": {
                                "type": "string",
                                "minLength": 1
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "current_value": {
                                "anyOf": [
                                  {
                                    "type": "number",
                                    "const": 0
                                  },
                                  {
                                    "type": "number",
                                    "const": 1
                                  }
                                ]
                              },
                              "boundary_value": {
                                "anyOf": [
                                  {
                                    "type": "number",
                                    "const": 0
                                  },
                                  {
                                    "type": "number",
                                    "const": 1
                                  }
                                ]
                              },
                              "progress_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "boundary_progress_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "movement": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "movement_pp": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "evidence_count": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "last_recorded_at": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "habit_expected_since_boundary": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "habit_logs_since_boundary": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "performance_share": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "objective_id",
                              "title",
                              "description",
                              "metric_type",
                              "start_value",
                              "target_value",
                              "unit",
                              "cadence",
                              "per",
                              "since",
                              "status",
                              "created_at",
                              "short_code",
                              "url",
                              "current_value",
                              "boundary_value",
                              "progress_pct",
                              "boundary_progress_pct",
                              "movement",
                              "movement_pp",
                              "evidence_count",
                              "last_recorded_at",
                              "habit_expected_since_boundary",
                              "habit_logs_since_boundary",
                              "performance_share"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "objective_id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "metric_type": {
                                "type": "string",
                                "const": "habit"
                              },
                              "start_value": {
                                "type": "number",
                                "const": 0
                              },
                              "target_value": {
                                "type": "number",
                                "const": 100
                              },
                              "unit": {
                                "type": "null"
                              },
                              "cadence": {
                                "type": "string",
                                "enum": [
                                  "weekly",
                                  "monthly"
                                ],
                                "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                              },
                              "per": {
                                "type": "integer",
                                "exclusiveMinimum": 0,
                                "maximum": 9007199254740991
                              },
                              "since": {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "in_progress",
                                  "completed"
                                ],
                                "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                              },
                              "created_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "short_code": {
                                "type": "string",
                                "minLength": 1
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "current_value": {
                                "type": "number",
                                "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                              },
                              "boundary_value": {
                                "type": "number"
                              },
                              "progress_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "boundary_progress_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "movement": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "movement_pp": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "evidence_count": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "last_recorded_at": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "habit_expected_since_boundary": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "habit_logs_since_boundary": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "performance_share": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "objective_id",
                              "title",
                              "description",
                              "metric_type",
                              "start_value",
                              "target_value",
                              "unit",
                              "cadence",
                              "per",
                              "since",
                              "status",
                              "created_at",
                              "short_code",
                              "url",
                              "current_value",
                              "boundary_value",
                              "progress_pct",
                              "boundary_progress_pct",
                              "movement",
                              "movement_pp",
                              "evidence_count",
                              "last_recorded_at",
                              "habit_expected_since_boundary",
                              "habit_logs_since_boundary",
                              "performance_share"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "objective_id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "metric_type": {
                                "type": "string",
                                "const": "performance"
                              },
                              "start_value": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                              },
                              "target_value": {
                                "type": "number"
                              },
                              "unit": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "UI label: Unit. Used by Number and Performance results."
                              },
                              "cadence": {
                                "type": "null"
                              },
                              "per": {
                                "type": "null"
                              },
                              "since": {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "in_progress",
                                  "completed"
                                ],
                                "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                              },
                              "created_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "short_code": {
                                "type": "string",
                                "minLength": 1
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "current_value": {
                                "type": "number",
                                "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                              },
                              "boundary_value": {
                                "type": "number"
                              },
                              "progress_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "boundary_progress_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "movement": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "movement_pp": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "evidence_count": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "last_recorded_at": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "habit_expected_since_boundary": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "habit_logs_since_boundary": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "performance_share": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "objective_id",
                              "title",
                              "description",
                              "metric_type",
                              "start_value",
                              "target_value",
                              "unit",
                              "cadence",
                              "per",
                              "since",
                              "status",
                              "created_at",
                              "short_code",
                              "url",
                              "current_value",
                              "boundary_value",
                              "progress_pct",
                              "boundary_progress_pct",
                              "movement",
                              "movement_pp",
                              "evidence_count",
                              "last_recorded_at",
                              "habit_expected_since_boundary",
                              "habit_logs_since_boundary",
                              "performance_share"
                            ],
                            "additionalProperties": false
                          }
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "action": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "cycle_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "objective_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "due_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "open",
                              "in_progress",
                              "done"
                            ],
                            "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                          },
                          "sort_order": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Drag order within an action group; not a progress status."
                          },
                          "session_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "overdue": {
                            "type": "boolean"
                          },
                          "done_since_boundary": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "id",
                          "cycle_id",
                          "objective_id",
                          "title",
                          "description",
                          "due_at",
                          "status",
                          "sort_order",
                          "session_id",
                          "created_at",
                          "url",
                          "overdue",
                          "done_since_boundary"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "note": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "text": {
                            "type": "string",
                            "minLength": 1
                          },
                          "recorded_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "since_boundary": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "id",
                          "text",
                          "recorded_at",
                          "url",
                          "since_boundary"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "session": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "vendor": {
                            "type": "string",
                            "enum": [
                              "claude",
                              "openai"
                            ],
                            "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                          },
                          "source_url": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uri"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "External conversation link used by Open the conversation. Not the app detail URL."
                          },
                          "type": {
                            "anyOf": [
                              {
                                "type": "string",
                                "enum": [
                                  "goal_setup",
                                  "check_in",
                                  "review",
                                  "open_coaching"
                                ],
                                "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "briefing_notes": {
                            "type": "string",
                            "description": "UI document: Briefing. Server-prepared coaching context."
                          },
                          "headline": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "One-line coaching-session summary used in session lists."
                          },
                          "summary_notes": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI document: Summary. Saved when the coaching session closes."
                          },
                          "started_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "ended_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                          },
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "Internal app link to coaching session details; distinct from source_url."
                          },
                          "duration_minutes": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "actions_created": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "actions_reviewed": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "id",
                          "vendor",
                          "source_url",
                          "type",
                          "briefing_notes",
                          "headline",
                          "summary_notes",
                          "started_at",
                          "ended_at",
                          "url",
                          "duration_minutes",
                          "actions_created",
                          "actions_reviewed"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "objective",
                  "result",
                  "action",
                  "note",
                  "session"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "profile",
              "boundary",
              "cycle_line",
              "cycles",
              "cycle",
              "objectives",
              "results",
              "actions",
              "notes",
              "last_completed_session",
              "selected",
              "continuations"
            ],
            "additionalProperties": false
          },
          "history": {
            "type": "object",
            "properties": {
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              },
              "result_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "value",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "habit_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "result_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "day": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "result_id",
                        "day",
                        "session_id",
                        "created_at"
                      ],
                      "additionalProperties": false,
                      "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "action_logs": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "action_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "open",
                            "in_progress",
                            "done"
                          ],
                          "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                        },
                        "comment": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "session_id": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        }
                      },
                      "required": [
                        "id",
                        "action_id",
                        "status",
                        "comment",
                        "session_id",
                        "recorded_at"
                      ],
                      "additionalProperties": false,
                      "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "notes": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "text": {
                          "type": "string",
                          "minLength": 1
                        },
                        "recorded_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "since_boundary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "text",
                        "recorded_at",
                        "url",
                        "since_boundary"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "sessions": {
                "type": "object",
                "properties": {
                  "items": {
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "vendor": {
                          "type": "string",
                          "enum": [
                            "claude",
                            "openai"
                          ],
                          "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                        },
                        "source_url": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "uri"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "External conversation link used by Open the conversation. Not the app detail URL."
                        },
                        "type": {
                          "anyOf": [
                            {
                              "type": "string",
                              "enum": [
                                "goal_setup",
                                "check_in",
                                "review",
                                "open_coaching"
                              ],
                              "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "briefing_notes": {
                          "type": "string",
                          "description": "UI document: Briefing. Server-prepared coaching context."
                        },
                        "headline": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "One-line coaching-session summary used in session lists."
                        },
                        "summary_notes": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI document: Summary. Saved when the coaching session closes."
                        },
                        "started_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "ended_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                        },
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Internal app link to coaching session details; distinct from source_url."
                        },
                        "duration_minutes": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "actions_created": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "actions_reviewed": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        }
                      },
                      "required": [
                        "id",
                        "vendor",
                        "source_url",
                        "type",
                        "briefing_notes",
                        "headline",
                        "summary_notes",
                        "started_at",
                        "ended_at",
                        "url",
                        "duration_minutes",
                        "actions_created",
                        "actions_reviewed"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "next_cursor": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "items",
                  "next_cursor"
                ],
                "additionalProperties": false
              },
              "continuations": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "enum": [
                    "cycles",
                    "objectives",
                    "results",
                    "actions",
                    "notes",
                    "sessions",
                    "result_logs",
                    "habit_logs",
                    "action_logs",
                    "trend"
                  ]
                },
                "additionalProperties": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "window",
              "result_logs",
              "habit_logs",
              "action_logs",
              "notes",
              "sessions",
              "continuations"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "as_of",
          "current"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "record.query",
          "service": "record.query",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "user.get",
      "readiness": "contract-only",
      "access": "retained-read",
      "effect": "read",
      "tables": {
        "user": "read",
        "subscription": "read",
        "oauth_consent": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Safe to retry with the same resolved filters and cursor.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F1-identity.md",
      "source": "packages/core/src/features/identity-billing/service.contract.ts#getUser",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "name": {
            "type": "string",
            "description": "Chosen coaching/display name, used verbatim. Target UI prompt: What should we call you? Empty means unknown; no separate surname."
          },
          "about_me": {
            "type": "string",
            "description": "UI label: About me."
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "description": "UI label: Time zone. IANA zone used for calendar dates and boundaries."
          },
          "email": {
            "type": "string",
            "format": "email",
            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
          },
          "subscription_status": {
            "type": "string",
            "enum": [
              "incomplete",
              "active",
              "past_due",
              "canceled"
            ],
            "description": "Derived from subscription, not a User column: active = Active, past_due = Payment failed, canceled = Canceled, incomplete = Awaiting payment. Only active grants paid access. Scheduled cancellation uses the separate flag; it is not a fifth status."
          },
          "subscription_cancel_at_period_end": {
            "type": "boolean",
            "description": "Derived from the selected local subscription; false when none exists."
          },
          "subscription_current_period_end": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ],
            "description": "Derived from the selected local subscription; null when none exists."
          },
          "connected": {
            "type": "boolean",
            "description": "True when an OAuth consent row exists for this user, for any client. Indicates prior authorization for onboarding, not current connector liveness."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          }
        },
        "required": [
          "id",
          "name",
          "about_me",
          "timezone",
          "email",
          "subscription_status",
          "subscription_cancel_at_period_end",
          "subscription_current_period_end",
          "connected",
          "created_at"
        ],
        "additionalProperties": false,
        "description": "Account view: chosen name and profile from user, billing state from subscription, and connected from oauth_consent. Auth credentials and provider tokens are not exposed."
      },
      "api": [
        {
          "operation": "user.get",
          "service": "user.get",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "user_read",
          "collection": "user",
          "specification": "docs/feature-specs/F1-identity.md#mcp-source-mapping--selected-target",
          "operation": "call",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "user.get"
          ],
          "gap": null,
          "projection": "Project permitted coaching profile only; user_update additionally requires MCP entitlement."
        }
      ]
    },
    {
      "path": "user.update",
      "readiness": "contract-only",
      "access": "account-management",
      "effect": "write",
      "tables": {
        "user": "write",
        "subscription": "read",
        "oauth_consent": "read"
      },
      "external": null,
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [
        {
          "event": "profile_updated",
          "when": "When at least one editable profile field changes; payload lists changed names only."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F1-identity.md",
      "source": "packages/core/src/features/identity-billing/service.contract.ts#updateUser",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "name": {
            "description": "Chosen coaching/display name; use verbatim. Omit to preserve, empty text clears it.",
            "type": "string"
          },
          "about_me": {
            "description": "UI label: About me. Coaching context; omit to preserve, empty text clears it, null is invalid.",
            "type": "string",
            "maxLength": 4000
          },
          "timezone": {
            "type": "string",
            "description": "UI label: Time zone. IANA zone used for calendar dates and boundaries."
          }
        },
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "name": {
                "type": "string",
                "description": "Chosen coaching/display name, used verbatim. Target UI prompt: What should we call you? Empty means unknown; no separate surname."
              },
              "about_me": {
                "type": "string",
                "description": "UI label: About me."
              },
              "timezone": {
                "type": "string",
                "minLength": 1,
                "description": "UI label: Time zone. IANA zone used for calendar dates and boundaries."
              }
            },
            "required": [
              "id",
              "name",
              "about_me",
              "timezone"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          },
          "continuations": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "cycles",
                "objectives",
                "results",
                "actions",
                "notes",
                "sessions",
                "result_logs",
                "habit_logs",
                "action_logs",
                "trend"
              ]
            },
            "additionalProperties": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "record",
          "changed",
          "continuations"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "user.update",
          "service": "user.update",
          "binding": "bound"
        }
      ],
      "mcp": [
        {
          "tool": "user_update",
          "collection": "user",
          "specification": "docs/feature-specs/F1-identity.md#mcp-source-mapping--selected-target",
          "operation": "call",
          "binding": "planned",
          "mode": "adapted",
          "readiness": "contract-only",
          "services": [
            "user.update"
          ],
          "gap": null,
          "projection": "Project permitted coaching profile only; user_update additionally requires MCP entitlement."
        }
      ]
    },
    {
      "path": "user.delete",
      "readiness": "contract-only",
      "access": "account-management",
      "effect": "delete",
      "tables": {
        "user": "delete"
      },
      "external": "stripe",
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [
        {
          "event": "account_deleted",
          "when": "In the successful deletion transaction, before user removal; ON DELETE SET NULL retains the event. Never on failed provider cancellation or replay."
        }
      ],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F1-identity.md",
      "source": "packages/core/src/features/identity-billing/service.contract.ts#deleteUser",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "password": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "password"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "user.delete",
          "service": "user.delete",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "billing.create_checkout_session",
      "readiness": "contract-only",
      "access": "account-management",
      "effect": "external",
      "tables": {
        "user": "read",
        "subscription": "read"
      },
      "external": "stripe",
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F1-identity.md",
      "source": "packages/core/src/features/identity-billing/service.contract.ts#createCheckoutSession",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "billing.create_checkout_session",
          "service": "billing.create_checkout_session",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "billing.create_portal_session",
      "readiness": "contract-only",
      "access": "account-management",
      "effect": "external",
      "tables": {
        "user": "read"
      },
      "external": "stripe",
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR"
      ],
      "requirement": "docs/feature-specs/F1-identity.md",
      "source": "packages/core/src/features/identity-billing/service.contract.ts#createBillingPortalSession",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      },
      "api": [
        {
          "operation": "billing.create_portal_session",
          "service": "billing.create_portal_session",
          "binding": "bound"
        }
      ],
      "mcp": []
    },
    {
      "path": "billing.get_details",
      "readiness": "contract-only",
      "access": "account-management",
      "effect": "external",
      "tables": {
        "subscription": "read"
      },
      "external": "stripe",
      "trusted_context": null,
      "retry": "Inspect state after uncertain outcomes; never infer rollback from a response failure.",
      "emits": [],
      "errors": [
        "UNAUTHORIZED",
        "BAD_REQUEST",
        "FORBIDDEN",
        "NOT_FOUND",
        "CONFLICT",
        "NOT_IMPLEMENTED",
        "INTERNAL_SERVER_ERROR",
        "SERVICE_UNAVAILABLE"
      ],
      "requirement": "docs/feature-specs/F1-identity.md",
      "source": "packages/core/src/features/identity-billing/service.contract.ts#getBillingDetails",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "plan": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "description": "UI label: Plan. Provider-backed name of the selected plan."
                  },
                  "amount_minor": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991,
                    "description": "UI label: Price. Recurring plan amount in the currency minor unit; not an invoice total or a tax/credit promise."
                  },
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$",
                    "description": "Three-letter currency code, upper case."
                  },
                  "interval": {
                    "type": "string",
                    "const": "month",
                    "description": "One monthly plan only."
                  },
                  "interval_count": {
                    "type": "number",
                    "const": 1
                  }
                },
                "required": [
                  "name",
                  "amount_minor",
                  "currency",
                  "interval",
                  "interval_count"
                ],
                "additionalProperties": false,
                "description": "The selected subscription plan, read from the billing provider."
              },
              {
                "type": "null"
              }
            ],
            "description": "Null when the account has no subscription (shown as No subscription)."
          },
          "payment_method": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "display": {
                    "type": "string",
                    "minLength": 1,
                    "description": "UI label: Payment method. Display text only, for example Visa ending in 4242; never a full number, token or provider object."
                  }
                },
                "required": [
                  "display"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Null when no payment method applies (shown as No payment method); never a provider failure."
          },
          "retrieved_at": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "description": "When these display details were fetched; not a subscription event ordering token."
          }
        },
        "required": [
          "plan",
          "payment_method",
          "retrieved_at"
        ],
        "additionalProperties": false,
        "description": "Settings billing details. Display only: never grants or denies entitlement and is never persisted."
      },
      "api": [
        {
          "operation": "billing.get_details",
          "service": "billing.get_details",
          "binding": "bound"
        }
      ],
      "mcp": []
    }
  ],
  "api": [
    {
      "operation": "user.get",
      "service": "user.get",
      "binding": "bound"
    },
    {
      "operation": "user.update",
      "service": "user.update",
      "binding": "bound"
    },
    {
      "operation": "user.delete",
      "service": "user.delete",
      "binding": "bound"
    },
    {
      "operation": "billing.create_checkout_session",
      "service": "billing.create_checkout_session",
      "binding": "bound"
    },
    {
      "operation": "billing.create_portal_session",
      "service": "billing.create_portal_session",
      "binding": "bound"
    },
    {
      "operation": "billing.get_details",
      "service": "billing.get_details",
      "binding": "bound"
    },
    {
      "operation": "cycles.create",
      "service": "cycles.create",
      "binding": "bound"
    },
    {
      "operation": "cycles.resolve_active",
      "service": "cycles.resolve_active",
      "binding": "bound"
    },
    {
      "operation": "cycles.get",
      "service": "cycles.get",
      "binding": "bound"
    },
    {
      "operation": "cycles.list",
      "service": "cycles.list",
      "binding": "bound"
    },
    {
      "operation": "cycles.update",
      "service": "cycles.update",
      "binding": "bound"
    },
    {
      "operation": "cycles.preview_deletion",
      "service": "cycles.preview_deletion",
      "binding": "bound"
    },
    {
      "operation": "cycles.delete",
      "service": "cycles.delete",
      "binding": "bound"
    },
    {
      "operation": "objectives.preview_deletion",
      "service": "objectives.preview_deletion",
      "binding": "bound"
    },
    {
      "operation": "objectives.create",
      "service": "objectives.create",
      "binding": "bound"
    },
    {
      "operation": "objectives.list",
      "service": "objectives.list",
      "binding": "bound"
    },
    {
      "operation": "objectives.get",
      "service": "objectives.get",
      "binding": "bound"
    },
    {
      "operation": "objectives.update",
      "service": "objectives.update",
      "binding": "bound"
    },
    {
      "operation": "objectives.delete",
      "service": "objectives.delete",
      "binding": "bound"
    },
    {
      "operation": "results.preview_deletion",
      "service": "results.preview_deletion",
      "binding": "bound"
    },
    {
      "operation": "results.create",
      "service": "results.create",
      "binding": "bound"
    },
    {
      "operation": "results.list",
      "service": "results.list",
      "binding": "bound"
    },
    {
      "operation": "results.get",
      "service": "results.get",
      "binding": "bound"
    },
    {
      "operation": "results.update",
      "service": "results.update",
      "binding": "bound"
    },
    {
      "operation": "results.delete",
      "service": "results.delete",
      "binding": "bound"
    },
    {
      "operation": "result_logs.create",
      "service": "result_logs.create",
      "binding": "bound"
    },
    {
      "operation": "result_logs.list",
      "service": "result_logs.list",
      "binding": "bound"
    },
    {
      "operation": "result_logs.clear_comment",
      "service": "result_logs.clear_comment",
      "binding": "bound"
    },
    {
      "operation": "result_logs.delete",
      "service": "result_logs.delete",
      "binding": "bound"
    },
    {
      "operation": "habit_logs.set",
      "service": "habit_logs.set",
      "binding": "bound"
    },
    {
      "operation": "habit_logs.list",
      "service": "habit_logs.list",
      "binding": "bound"
    },
    {
      "operation": "actions.preview_deletion",
      "service": "actions.preview_deletion",
      "binding": "bound"
    },
    {
      "operation": "actions.create",
      "service": "actions.create",
      "binding": "bound"
    },
    {
      "operation": "actions.list",
      "service": "actions.list",
      "binding": "bound"
    },
    {
      "operation": "actions.get",
      "service": "actions.get",
      "binding": "bound"
    },
    {
      "operation": "actions.update",
      "service": "actions.update",
      "binding": "bound"
    },
    {
      "operation": "actions.reorder",
      "service": "actions.reorder",
      "binding": "bound"
    },
    {
      "operation": "actions.delete",
      "service": "actions.delete",
      "binding": "bound"
    },
    {
      "operation": "action_logs.create",
      "service": "action_logs.create",
      "binding": "bound"
    },
    {
      "operation": "action_logs.list",
      "service": "action_logs.list",
      "binding": "bound"
    },
    {
      "operation": "action_logs.clear_comment",
      "service": "action_logs.clear_comment",
      "binding": "bound"
    },
    {
      "operation": "notes.preview_deletion",
      "service": "notes.preview_deletion",
      "binding": "bound"
    },
    {
      "operation": "notes.create",
      "service": "notes.create",
      "binding": "bound"
    },
    {
      "operation": "notes.update",
      "service": "notes.update",
      "binding": "bound"
    },
    {
      "operation": "notes.list",
      "service": "notes.list",
      "binding": "bound"
    },
    {
      "operation": "notes.get",
      "service": "notes.get",
      "binding": "bound"
    },
    {
      "operation": "notes.delete",
      "service": "notes.delete",
      "binding": "bound"
    },
    {
      "operation": "sessions.start",
      "service": "sessions.start",
      "binding": "bound"
    },
    {
      "operation": "sessions.list",
      "service": "sessions.list",
      "binding": "bound"
    },
    {
      "operation": "sessions.get",
      "service": "sessions.get",
      "binding": "bound"
    },
    {
      "operation": "sessions.close",
      "service": "sessions.close",
      "binding": "bound"
    },
    {
      "operation": "record.query",
      "service": "record.query",
      "binding": "bound"
    }
  ],
  "mcp": [
    {
      "tool": "cycle_read",
      "collection": "cycles",
      "specification": "docs/feature-specs/F2-cycles.md#entity-specific-cycle-query",
      "operation": "list",
      "binding": "bound",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "cycles.list"
      ],
      "gap": null,
      "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "operation": {
                "type": "string",
                "const": "list",
                "description": "Find cycles; reuse fresh results directly for updates."
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "string",
                    "const": "active"
                  }
                ],
                "description": "Owned cycle UUID from fresh context, or active for the stored active cycle at execution. No date-based expiry or fallback. Use the UUID for a specifically selected cycle."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "intention": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                    },
                    "start_at": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "UI label: Starts."
                    },
                    "end_at": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "UI label: Ends."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "active",
                        "archived"
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "achievement_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                    },
                    "time_gone_pct": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100,
                      "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                    },
                    "length_weeks": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991,
                      "description": "UI label: Length, in weeks; derived from Starts and Ends."
                    }
                  },
                  "required": [
                    "id",
                    "intention",
                    "start_at",
                    "end_at",
                    "status",
                    "created_at",
                    "url",
                    "achievement_pct",
                    "time_gone_pct",
                    "length_weeks"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "cycle_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "operation": {
                            "type": "string",
                            "const": "list"
                          },
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          }
                        },
                        "required": [
                          "operation",
                          "cursor",
                          "limit"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "cycle": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "intention": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                      },
                      "start_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Starts."
                      },
                      "end_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Ends."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "active",
                          "archived"
                        ]
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "achievement_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                      },
                      "time_gone_pct": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100,
                        "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                      },
                      "length_weeks": {
                        "type": "integer",
                        "minimum": -9007199254740991,
                        "maximum": 9007199254740991,
                        "description": "UI label: Length, in weeks; derived from Starts and Ends."
                      }
                    },
                    "required": [
                      "id",
                      "intention",
                      "start_at",
                      "end_at",
                      "status",
                      "created_at",
                      "url",
                      "achievement_pct",
                      "time_gone_pct",
                      "length_weeks"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "cycle"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "cycle_read",
      "collection": "cycles",
      "specification": "docs/feature-specs/F2-cycles.md#entity-specific-cycle-query",
      "operation": "get",
      "binding": "bound",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "cycles.get",
        "cycles.get_stored_active"
      ],
      "gap": null,
      "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "operation": {
                "type": "string",
                "const": "list",
                "description": "Find cycles; reuse fresh results directly for updates."
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "string",
                    "const": "active"
                  }
                ],
                "description": "Owned cycle UUID from fresh context, or active for the stored active cycle at execution. No date-based expiry or fallback. Use the UUID for a specifically selected cycle."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "intention": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                    },
                    "start_at": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "UI label: Starts."
                    },
                    "end_at": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "UI label: Ends."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "active",
                        "archived"
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "achievement_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                    },
                    "time_gone_pct": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 100,
                      "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                    },
                    "length_weeks": {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991,
                      "description": "UI label: Length, in weeks; derived from Starts and Ends."
                    }
                  },
                  "required": [
                    "id",
                    "intention",
                    "start_at",
                    "end_at",
                    "status",
                    "created_at",
                    "url",
                    "achievement_pct",
                    "time_gone_pct",
                    "length_weeks"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "cycle_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "operation": {
                            "type": "string",
                            "const": "list"
                          },
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          }
                        },
                        "required": [
                          "operation",
                          "cursor",
                          "limit"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "cycle": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "intention": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                      },
                      "start_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Starts."
                      },
                      "end_at": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "UI label: Ends."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "active",
                          "archived"
                        ]
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "achievement_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                      },
                      "time_gone_pct": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100,
                        "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                      },
                      "length_weeks": {
                        "type": "integer",
                        "minimum": -9007199254740991,
                        "maximum": 9007199254740991,
                        "description": "UI label: Length, in weeks; derived from Starts and Ends."
                      }
                    },
                    "required": [
                      "id",
                      "intention",
                      "start_at",
                      "end_at",
                      "status",
                      "created_at",
                      "url",
                      "achievement_pct",
                      "time_gone_pct",
                      "length_weeks"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "cycle"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "cycle_update",
      "collection": "cycles",
      "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
      "operation": "call",
      "binding": "bound",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "cycles.update"
      ],
      "gap": null,
      "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              {
                "type": "string",
                "const": "active"
              }
            ],
            "description": "Owned cycle UUID from fresh context, or active for the stored active cycle at execution. No date-based expiry or fallback. Use the UUID for a specifically selected cycle."
          },
          "start_at": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "UI label: Starts. Calendar date, YYYY-MM-DD. Required on create; omit on update to preserve."
          },
          "end_at": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
            "description": "UI label: Ends. Calendar date, YYYY-MM-DD; must be after the resulting start date."
          },
          "intention": {
            "description": "Personal focus. Omit to preserve on update; null clears it.",
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cycle": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "intention": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
              },
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends."
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "achievement_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
              },
              "time_gone_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
              },
              "length_weeks": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "UI label: Length, in weeks; derived from Starts and Ends."
              }
            },
            "required": [
              "id",
              "intention",
              "start_at",
              "end_at",
              "status",
              "created_at",
              "url",
              "achievement_pct",
              "time_gone_pct",
              "length_weeks"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "cycle",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "cycle_lifecycle",
      "collection": "cycles",
      "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
      "operation": "create",
      "binding": "bound",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "cycles.create"
      ],
      "gap": null,
      "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts. Calendar date, YYYY-MM-DD. Required on create; omit on update to preserve."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends. Calendar date, YYYY-MM-DD; must be after the resulting start date."
              },
              "intention": {
                "description": "Personal focus. Omit to preserve on update; null clears it.",
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "idempotency_key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "Unique key per logical create. Reuse the same key AND fields on every retry, including uncertain outcomes. A new create needs a new key."
              },
              "operation": {
                "type": "string",
                "const": "create"
              }
            },
            "required": [
              "start_at",
              "end_at",
              "idempotency_key",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "archive"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "activate"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cycle": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "intention": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
              },
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends."
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "achievement_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
              },
              "time_gone_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
              },
              "length_weeks": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "UI label: Length, in weeks; derived from Starts and Ends."
              }
            },
            "required": [
              "id",
              "intention",
              "start_at",
              "end_at",
              "status",
              "created_at",
              "url",
              "achievement_pct",
              "time_gone_pct",
              "length_weeks"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "cycle",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "cycle_lifecycle",
      "collection": "cycles",
      "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
      "operation": "archive",
      "binding": "bound",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "cycles.update"
      ],
      "gap": null,
      "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts. Calendar date, YYYY-MM-DD. Required on create; omit on update to preserve."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends. Calendar date, YYYY-MM-DD; must be after the resulting start date."
              },
              "intention": {
                "description": "Personal focus. Omit to preserve on update; null clears it.",
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "idempotency_key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "Unique key per logical create. Reuse the same key AND fields on every retry, including uncertain outcomes. A new create needs a new key."
              },
              "operation": {
                "type": "string",
                "const": "create"
              }
            },
            "required": [
              "start_at",
              "end_at",
              "idempotency_key",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "archive"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "activate"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cycle": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "intention": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
              },
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends."
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "achievement_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
              },
              "time_gone_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
              },
              "length_weeks": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "UI label: Length, in weeks; derived from Starts and Ends."
              }
            },
            "required": [
              "id",
              "intention",
              "start_at",
              "end_at",
              "status",
              "created_at",
              "url",
              "achievement_pct",
              "time_gone_pct",
              "length_weeks"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "cycle",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "cycle_lifecycle",
      "collection": "cycles",
      "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
      "operation": "activate",
      "binding": "bound",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "cycles.update"
      ],
      "gap": null,
      "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts. Calendar date, YYYY-MM-DD. Required on create; omit on update to preserve."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends. Calendar date, YYYY-MM-DD; must be after the resulting start date."
              },
              "intention": {
                "description": "Personal focus. Omit to preserve on update; null clears it.",
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "idempotency_key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "Unique key per logical create. Reuse the same key AND fields on every retry, including uncertain outcomes. A new create needs a new key."
              },
              "operation": {
                "type": "string",
                "const": "create"
              }
            },
            "required": [
              "start_at",
              "end_at",
              "idempotency_key",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "archive"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "activate"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "cycle": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "intention": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
              },
              "start_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Starts."
              },
              "end_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "UI label: Ends."
              },
              "status": {
                "type": "string",
                "enum": [
                  "active",
                  "archived"
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "achievement_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
              },
              "time_gone_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
              },
              "length_weeks": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991,
                "description": "UI label: Length, in weeks; derived from Starts and Ends."
              }
            },
            "required": [
              "id",
              "intention",
              "start_at",
              "end_at",
              "status",
              "created_at",
              "url",
              "achievement_pct",
              "time_gone_pct",
              "length_weeks"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "cycle",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "cycle_delete",
      "collection": "cycles",
      "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
      "operation": "preview",
      "binding": "bound",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "cycles.preview_deletion"
      ],
      "gap": null,
      "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "preview"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Server-issued impact preview ID. This is not approval: the service checks genuine user approval recorded by the trusted host/application."
              },
              "operation": {
                "type": "string",
                "const": "commit"
              }
            },
            "required": [
              "id",
              "preview_id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "cycle": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "start_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Starts."
                  },
                  "end_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Ends."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  }
                },
                "required": [
                  "id",
                  "start_at",
                  "end_at",
                  "status"
                ],
                "additionalProperties": false
              },
              "deleted": {
                "type": "object",
                "properties": {
                  "cycles": {
                    "type": "number",
                    "const": 1
                  },
                  "objectives": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "results": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "result_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "habit_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "actions": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "action_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "cycles",
                  "objectives",
                  "results",
                  "result_logs",
                  "habit_logs",
                  "actions",
                  "action_logs"
                ],
                "additionalProperties": false
              },
              "retained": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string",
                    "const": "notes"
                  },
                  {
                    "type": "string",
                    "const": "sessions"
                  }
                ]
              },
              "active_remaining": {
                "type": "boolean"
              },
              "approval": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "const": "required"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "status",
                  "url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "preview_id",
              "expires_at",
              "cycle",
              "deleted",
              "retained",
              "active_remaining",
              "approval"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "active_remaining": {
                "type": "boolean"
              },
              "operation": {
                "type": "string",
                "const": "commit"
              }
            },
            "required": [
              "id",
              "active_remaining",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "cycle_delete",
      "collection": "cycles",
      "specification": "docs/feature-specs/F2-cycles.md#mcp-contract",
      "operation": "commit",
      "binding": "bound",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "cycles.delete"
      ],
      "gap": null,
      "projection": "Dispatch lifecycle operations explicitly; read returns the cycle only; writes project record.cycle and changed; readers preserve continuations.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "preview"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Server-issued impact preview ID. This is not approval: the service checks genuine user approval recorded by the trusted host/application."
              },
              "operation": {
                "type": "string",
                "const": "commit"
              }
            },
            "required": [
              "id",
              "preview_id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "cycle": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "start_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Starts."
                  },
                  "end_at": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "UI label: Ends."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  }
                },
                "required": [
                  "id",
                  "start_at",
                  "end_at",
                  "status"
                ],
                "additionalProperties": false
              },
              "deleted": {
                "type": "object",
                "properties": {
                  "cycles": {
                    "type": "number",
                    "const": 1
                  },
                  "objectives": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "results": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "result_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "habit_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "actions": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "action_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "cycles",
                  "objectives",
                  "results",
                  "result_logs",
                  "habit_logs",
                  "actions",
                  "action_logs"
                ],
                "additionalProperties": false
              },
              "retained": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "string",
                    "const": "notes"
                  },
                  {
                    "type": "string",
                    "const": "sessions"
                  }
                ]
              },
              "active_remaining": {
                "type": "boolean"
              },
              "approval": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "const": "required"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "status",
                  "url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "preview_id",
              "expires_at",
              "cycle",
              "deleted",
              "retained",
              "active_remaining",
              "approval"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "active_remaining": {
                "type": "boolean"
              },
              "operation": {
                "type": "string",
                "const": "commit"
              }
            },
            "required": [
              "id",
              "active_remaining",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "objective_read",
      "collection": "objectives",
      "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
      "operation": "list",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "objectives.list"
      ],
      "gap": null,
      "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "get"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "cycle_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "deadline_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Deadline; null when no deadline has been set."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "on_track",
                        "off_track",
                        "completed"
                      ],
                      "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "short_code": {
                      "type": "string",
                      "minLength": 1
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Progress. Derived from measurable results, independently of Status."
                    },
                    "boundary_progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Historical progress at the resolved last-session boundary; not current Progress."
                    },
                    "movement_pp": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "cycle_id",
                    "title",
                    "description",
                    "deadline_at",
                    "status",
                    "created_at",
                    "short_code",
                    "url",
                    "progress_pct",
                    "boundary_progress_pct",
                    "movement_pp"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "objective_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "cycle_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "cycle_id",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "objective": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "deadline_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Deadline; null when no deadline has been set."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "on_track",
                      "off_track",
                      "completed"
                    ],
                    "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Progress. Derived from measurable results, independently of Status."
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Historical progress at the resolved last-session boundary; not current Progress."
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "title",
                  "description",
                  "deadline_at",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement_pp"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "objective"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "objective_read",
      "collection": "objectives",
      "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
      "operation": "get",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "objectives.get"
      ],
      "gap": null,
      "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "get"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "cycle_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "deadline_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Deadline; null when no deadline has been set."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "on_track",
                        "off_track",
                        "completed"
                      ],
                      "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "short_code": {
                      "type": "string",
                      "minLength": 1
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Progress. Derived from measurable results, independently of Status."
                    },
                    "boundary_progress_pct": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Historical progress at the resolved last-session boundary; not current Progress."
                    },
                    "movement_pp": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "cycle_id",
                    "title",
                    "description",
                    "deadline_at",
                    "status",
                    "created_at",
                    "short_code",
                    "url",
                    "progress_pct",
                    "boundary_progress_pct",
                    "movement_pp"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "objective_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "cycle_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "cycle_id",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "objective": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "deadline_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Deadline; null when no deadline has been set."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "on_track",
                      "off_track",
                      "completed"
                    ],
                    "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Progress. Derived from measurable results, independently of Status."
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Historical progress at the resolved last-session boundary; not current Progress."
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "title",
                  "description",
                  "deadline_at",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement_pp"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "objective"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "objective_write",
      "collection": "objectives",
      "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
      "operation": "create",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "objectives.create"
      ],
      "gap": null,
      "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "title": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "deadline_at": {
                "description": "UI label: Deadline. Optional; omitted or null creates the objective with no deadline.",
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "create"
              }
            },
            "required": [
              "title",
              "description",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "deadline_at": {
                "description": "UI label: Deadline. Omit to preserve; a date sets or replaces it. A deadline cannot be cleared, so null is rejected.",
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
              },
              "status": {
                "type": "string",
                "enum": [
                  "on_track",
                  "off_track",
                  "completed"
                ],
                "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
              },
              "operation": {
                "type": "string",
                "const": "update"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "objective": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "deadline_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Deadline; null when no deadline has been set."
              },
              "status": {
                "type": "string",
                "enum": [
                  "on_track",
                  "off_track",
                  "completed"
                ],
                "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "short_code": {
                "type": "string",
                "minLength": 1
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "progress_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Progress. Derived from measurable results, independently of Status."
              },
              "boundary_progress_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Historical progress at the resolved last-session boundary; not current Progress."
              },
              "movement_pp": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id",
              "cycle_id",
              "title",
              "description",
              "deadline_at",
              "status",
              "created_at",
              "short_code",
              "url",
              "progress_pct",
              "boundary_progress_pct",
              "movement_pp"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "objective",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "objective_write",
      "collection": "objectives",
      "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
      "operation": "update",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "objectives.update"
      ],
      "gap": null,
      "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "title": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "deadline_at": {
                "description": "UI label: Deadline. Optional; omitted or null creates the objective with no deadline.",
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "create"
              }
            },
            "required": [
              "title",
              "description",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string"
              },
              "deadline_at": {
                "description": "UI label: Deadline. Omit to preserve; a date sets or replaces it. A deadline cannot be cleared, so null is rejected.",
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
              },
              "status": {
                "type": "string",
                "enum": [
                  "on_track",
                  "off_track",
                  "completed"
                ],
                "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
              },
              "operation": {
                "type": "string",
                "const": "update"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "objective": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "deadline_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Deadline; null when no deadline has been set."
              },
              "status": {
                "type": "string",
                "enum": [
                  "on_track",
                  "off_track",
                  "completed"
                ],
                "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "short_code": {
                "type": "string",
                "minLength": 1
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "progress_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Progress. Derived from measurable results, independently of Status."
              },
              "boundary_progress_pct": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Historical progress at the resolved last-session boundary; not current Progress."
              },
              "movement_pp": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id",
              "cycle_id",
              "title",
              "description",
              "deadline_at",
              "status",
              "created_at",
              "short_code",
              "url",
              "progress_pct",
              "boundary_progress_pct",
              "movement_pp"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "objective",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "objective_delete",
      "collection": "objectives",
      "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
      "operation": "preview",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "objectives.preview_deletion"
      ],
      "gap": null,
      "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Exact owned record UUID. Resolve ambiguous targets before requesting impact."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Server preview ID for this target. Not consent: genuine approval must already be recorded by the trusted application."
              }
            },
            "required": [
              "operation",
              "id",
              "preview_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "target": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false
              },
              "deleted": {
                "type": "object",
                "properties": {
                  "objectives": {
                    "type": "number",
                    "const": 1
                  },
                  "results": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "result_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "habit_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "actions": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "action_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "objectives",
                  "results",
                  "result_logs",
                  "habit_logs",
                  "actions",
                  "action_logs"
                ],
                "additionalProperties": false
              },
              "approval": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "const": "required"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "status",
                  "url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "preview_id",
              "expires_at",
              "target",
              "deleted",
              "approval"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "objective_delete",
      "collection": "objectives",
      "specification": "docs/feature-specs/F3-objectives.md#mcp-source-mapping--selected-target",
      "operation": "commit",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "objectives.delete"
      ],
      "gap": null,
      "projection": "Project record.objective and changed on writes; list uses resolved cycle_id for continuations; get returns objective only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Exact owned record UUID. Resolve ambiguous targets before requesting impact."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Server preview ID for this target. Not consent: genuine approval must already be recorded by the trusted application."
              }
            },
            "required": [
              "operation",
              "id",
              "preview_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "target": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false
              },
              "deleted": {
                "type": "object",
                "properties": {
                  "objectives": {
                    "type": "number",
                    "const": 1
                  },
                  "results": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "result_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "habit_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "actions": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "action_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "objectives",
                  "results",
                  "result_logs",
                  "habit_logs",
                  "actions",
                  "action_logs"
                ],
                "additionalProperties": false
              },
              "approval": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "const": "required"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "status",
                  "url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "preview_id",
              "expires_at",
              "target",
              "deleted",
              "approval"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "result_read",
      "collection": "results",
      "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
      "operation": "list",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "results.list"
      ],
      "gap": null,
      "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "objective_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "cycle_id": {
                "description": "List results across one cycle instead of a single objective. Supply exactly one parent selector.",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "attention": {
                "description": "Optional briefing subset: no evidence ever, no update in the window, or habit with no mark in the window.",
                "type": "string",
                "enum": [
                  "never_updated",
                  "silent",
                  "unmarked"
                ]
              },
              "window": {
                "description": "Required for silent/unmarked attention. Use exact server-resolved briefing bounds; current result figures remain current.",
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "get"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "result_logs",
                  "habit_logs",
                  "trend"
                ],
                "description": "Evidence stream to page; get returns current figures regardless of this window."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "enum": [
                          "last_session",
                          "cycle_start"
                        ]
                      }
                    ]
                  },
                  "until": {
                    "description": "Exclusive upper bound; default is the server time captured on the first page.",
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "result_id",
              "operation",
              "kind"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "number"
                        },
                        "start_value": {
                          "type": "number"
                        },
                        "target_value": {
                          "type": "number"
                        },
                        "unit": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Unit. Used by Number and Performance results."
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "percentage"
                        },
                        "start_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "target_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "boundary_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "milestone"
                        },
                        "start_value": {
                          "type": "number",
                          "const": 0
                        },
                        "target_value": {
                          "type": "number",
                          "const": 1
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "anyOf": [
                            {
                              "type": "number",
                              "const": 0
                            },
                            {
                              "type": "number",
                              "const": 1
                            }
                          ]
                        },
                        "boundary_value": {
                          "anyOf": [
                            {
                              "type": "number",
                              "const": 0
                            },
                            {
                              "type": "number",
                              "const": 1
                            }
                          ]
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "habit"
                        },
                        "start_value": {
                          "type": "number",
                          "const": 0
                        },
                        "target_value": {
                          "type": "number",
                          "const": 100
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "string",
                          "enum": [
                            "weekly",
                            "monthly"
                          ],
                          "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                        },
                        "per": {
                          "type": "integer",
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991
                        },
                        "since": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "performance"
                        },
                        "start_value": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                        },
                        "target_value": {
                          "type": "number"
                        },
                        "unit": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Unit. Used by Number and Performance results."
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "objective_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "cycle_id": {
                            "description": "List results across one cycle instead of a single objective. Supply exactly one parent selector.",
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                          },
                          "attention": {
                            "description": "Optional briefing subset: no evidence ever, no update in the window, or habit with no mark in the window.",
                            "type": "string",
                            "enum": [
                              "never_updated",
                              "silent",
                              "unmarked"
                            ]
                          },
                          "window": {
                            "description": "Required for silent/unmarked attention. Use exact server-resolved briefing bounds; current result figures remain current.",
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              }
            },
            "required": [
              "operation",
              "result"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "result_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "comment": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "recorded_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "result_id",
                    "value",
                    "comment",
                    "session_id",
                    "recorded_at"
                  ],
                  "additionalProperties": false,
                  "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "result_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "kind": {
                            "type": "string",
                            "const": "result_logs"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "result_id",
                          "operation",
                          "kind",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "const": "result_logs"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "result_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "day": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "result_id",
                    "day",
                    "session_id",
                    "created_at"
                  ],
                  "additionalProperties": false,
                  "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "result_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "kind": {
                            "type": "string",
                            "const": "habit_logs"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "result_id",
                          "operation",
                          "kind",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "const": "habit_logs"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "value"
                        },
                        "at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "value": {
                          "type": "number"
                        },
                        "pace": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "kind",
                        "at",
                        "value",
                        "pace"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "habit"
                        },
                        "from": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "to": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "actual": {
                          "type": "integer",
                          "minimum": -9007199254740991,
                          "maximum": 9007199254740991
                        },
                        "expected": {
                          "type": "number"
                        },
                        "expected_full": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "kind",
                        "from",
                        "to",
                        "actual",
                        "expected",
                        "expected_full"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "performance"
                        },
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "value": {
                          "type": "number"
                        },
                        "target": {
                          "type": "number"
                        },
                        "gap": {
                          "type": "number"
                        },
                        "share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "at",
                        "value",
                        "target",
                        "gap",
                        "share"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "result_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "kind": {
                            "type": "string",
                            "const": "trend"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "result_id",
                          "operation",
                          "kind",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "const": "trend"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "result_read",
      "collection": "results",
      "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
      "operation": "get",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "results.get"
      ],
      "gap": null,
      "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "objective_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "cycle_id": {
                "description": "List results across one cycle instead of a single objective. Supply exactly one parent selector.",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "attention": {
                "description": "Optional briefing subset: no evidence ever, no update in the window, or habit with no mark in the window.",
                "type": "string",
                "enum": [
                  "never_updated",
                  "silent",
                  "unmarked"
                ]
              },
              "window": {
                "description": "Required for silent/unmarked attention. Use exact server-resolved briefing bounds; current result figures remain current.",
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "get"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "result_logs",
                  "habit_logs",
                  "trend"
                ],
                "description": "Evidence stream to page; get returns current figures regardless of this window."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "enum": [
                          "last_session",
                          "cycle_start"
                        ]
                      }
                    ]
                  },
                  "until": {
                    "description": "Exclusive upper bound; default is the server time captured on the first page.",
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "result_id",
              "operation",
              "kind"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "number"
                        },
                        "start_value": {
                          "type": "number"
                        },
                        "target_value": {
                          "type": "number"
                        },
                        "unit": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Unit. Used by Number and Performance results."
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "percentage"
                        },
                        "start_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "target_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "boundary_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "milestone"
                        },
                        "start_value": {
                          "type": "number",
                          "const": 0
                        },
                        "target_value": {
                          "type": "number",
                          "const": 1
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "anyOf": [
                            {
                              "type": "number",
                              "const": 0
                            },
                            {
                              "type": "number",
                              "const": 1
                            }
                          ]
                        },
                        "boundary_value": {
                          "anyOf": [
                            {
                              "type": "number",
                              "const": 0
                            },
                            {
                              "type": "number",
                              "const": 1
                            }
                          ]
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "habit"
                        },
                        "start_value": {
                          "type": "number",
                          "const": 0
                        },
                        "target_value": {
                          "type": "number",
                          "const": 100
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "string",
                          "enum": [
                            "weekly",
                            "monthly"
                          ],
                          "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                        },
                        "per": {
                          "type": "integer",
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991
                        },
                        "since": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "performance"
                        },
                        "start_value": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                        },
                        "target_value": {
                          "type": "number"
                        },
                        "unit": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Unit. Used by Number and Performance results."
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "objective_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "cycle_id": {
                            "description": "List results across one cycle instead of a single objective. Supply exactly one parent selector.",
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                          },
                          "attention": {
                            "description": "Optional briefing subset: no evidence ever, no update in the window, or habit with no mark in the window.",
                            "type": "string",
                            "enum": [
                              "never_updated",
                              "silent",
                              "unmarked"
                            ]
                          },
                          "window": {
                            "description": "Required for silent/unmarked attention. Use exact server-resolved briefing bounds; current result figures remain current.",
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              }
            },
            "required": [
              "operation",
              "result"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "result_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "comment": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "recorded_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "result_id",
                    "value",
                    "comment",
                    "session_id",
                    "recorded_at"
                  ],
                  "additionalProperties": false,
                  "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "result_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "kind": {
                            "type": "string",
                            "const": "result_logs"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "result_id",
                          "operation",
                          "kind",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "const": "result_logs"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "result_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "day": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "result_id",
                    "day",
                    "session_id",
                    "created_at"
                  ],
                  "additionalProperties": false,
                  "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "result_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "kind": {
                            "type": "string",
                            "const": "habit_logs"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "result_id",
                          "operation",
                          "kind",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "const": "habit_logs"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "value"
                        },
                        "at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "value": {
                          "type": "number"
                        },
                        "pace": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "kind",
                        "at",
                        "value",
                        "pace"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "habit"
                        },
                        "from": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "to": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "actual": {
                          "type": "integer",
                          "minimum": -9007199254740991,
                          "maximum": 9007199254740991
                        },
                        "expected": {
                          "type": "number"
                        },
                        "expected_full": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "kind",
                        "from",
                        "to",
                        "actual",
                        "expected",
                        "expected_full"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "performance"
                        },
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "value": {
                          "type": "number"
                        },
                        "target": {
                          "type": "number"
                        },
                        "gap": {
                          "type": "number"
                        },
                        "share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "at",
                        "value",
                        "target",
                        "gap",
                        "share"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "result_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "kind": {
                            "type": "string",
                            "const": "trend"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "result_id",
                          "operation",
                          "kind",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "const": "trend"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "result_read",
      "collection": "results",
      "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
      "operation": "history",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "results.history"
      ],
      "gap": null,
      "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "objective_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "cycle_id": {
                "description": "List results across one cycle instead of a single objective. Supply exactly one parent selector.",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "attention": {
                "description": "Optional briefing subset: no evidence ever, no update in the window, or habit with no mark in the window.",
                "type": "string",
                "enum": [
                  "never_updated",
                  "silent",
                  "unmarked"
                ]
              },
              "window": {
                "description": "Required for silent/unmarked attention. Use exact server-resolved briefing bounds; current result figures remain current.",
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "get"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "result_logs",
                  "habit_logs",
                  "trend"
                ],
                "description": "Evidence stream to page; get returns current figures regardless of this window."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "enum": [
                          "last_session",
                          "cycle_start"
                        ]
                      }
                    ]
                  },
                  "until": {
                    "description": "Exclusive upper bound; default is the server time captured on the first page.",
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "result_id",
              "operation",
              "kind"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "number"
                        },
                        "start_value": {
                          "type": "number"
                        },
                        "target_value": {
                          "type": "number"
                        },
                        "unit": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Unit. Used by Number and Performance results."
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "percentage"
                        },
                        "start_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "target_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "boundary_value": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 100
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "milestone"
                        },
                        "start_value": {
                          "type": "number",
                          "const": 0
                        },
                        "target_value": {
                          "type": "number",
                          "const": 1
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "null"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "anyOf": [
                            {
                              "type": "number",
                              "const": 0
                            },
                            {
                              "type": "number",
                              "const": 1
                            }
                          ]
                        },
                        "boundary_value": {
                          "anyOf": [
                            {
                              "type": "number",
                              "const": 0
                            },
                            {
                              "type": "number",
                              "const": 1
                            }
                          ]
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "habit"
                        },
                        "start_value": {
                          "type": "number",
                          "const": 0
                        },
                        "target_value": {
                          "type": "number",
                          "const": 100
                        },
                        "unit": {
                          "type": "null"
                        },
                        "cadence": {
                          "type": "string",
                          "enum": [
                            "weekly",
                            "monthly"
                          ],
                          "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                        },
                        "per": {
                          "type": "integer",
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991
                        },
                        "since": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "objective_id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "title": {
                          "type": "string"
                        },
                        "description": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "metric_type": {
                          "type": "string",
                          "const": "performance"
                        },
                        "start_value": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                        },
                        "target_value": {
                          "type": "number"
                        },
                        "unit": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "UI label: Unit. Used by Number and Performance results."
                        },
                        "cadence": {
                          "type": "null"
                        },
                        "per": {
                          "type": "null"
                        },
                        "since": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in_progress",
                            "completed"
                          ],
                          "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "short_code": {
                          "type": "string",
                          "minLength": 1
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "current_value": {
                          "type": "number",
                          "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                        },
                        "boundary_value": {
                          "type": "number"
                        },
                        "progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "boundary_progress_pct": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "movement_pp": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "evidence_count": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "last_recorded_at": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_expected_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "habit_logs_since_boundary": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "performance_share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "id",
                        "objective_id",
                        "title",
                        "description",
                        "metric_type",
                        "start_value",
                        "target_value",
                        "unit",
                        "cadence",
                        "per",
                        "since",
                        "status",
                        "created_at",
                        "short_code",
                        "url",
                        "current_value",
                        "boundary_value",
                        "progress_pct",
                        "boundary_progress_pct",
                        "movement",
                        "movement_pp",
                        "evidence_count",
                        "last_recorded_at",
                        "habit_expected_since_boundary",
                        "habit_logs_since_boundary",
                        "performance_share"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "objective_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "cycle_id": {
                            "description": "List results across one cycle instead of a single objective. Supply exactly one parent selector.",
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                          },
                          "attention": {
                            "description": "Optional briefing subset: no evidence ever, no update in the window, or habit with no mark in the window.",
                            "type": "string",
                            "enum": [
                              "never_updated",
                              "silent",
                              "unmarked"
                            ]
                          },
                          "window": {
                            "description": "Required for silent/unmarked attention. Use exact server-resolved briefing bounds; current result figures remain current.",
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              }
            },
            "required": [
              "operation",
              "result"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "result_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "comment": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "recorded_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "result_id",
                    "value",
                    "comment",
                    "session_id",
                    "recorded_at"
                  ],
                  "additionalProperties": false,
                  "description": "Result log stored in result_logs. The UI shows value entries under Updates and their non-empty comments under Comments. Value may be null for a comment-only habit entry; evidence and timestamps are immutable."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "result_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "kind": {
                            "type": "string",
                            "const": "result_logs"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "result_id",
                          "operation",
                          "kind",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "const": "result_logs"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "result_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "day": {
                      "type": "string",
                      "format": "date",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "result_id",
                    "day",
                    "session_id",
                    "created_at"
                  ],
                  "additionalProperties": false,
                  "description": "Habit log stored in habit_logs. The UI marks calendar days and lists them under Updates with the Marked column. One row per result/day; unmarking deletes the row. This is not append-only history."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "result_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "kind": {
                            "type": "string",
                            "const": "habit_logs"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "result_id",
                          "operation",
                          "kind",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "const": "habit_logs"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "oneOf": [
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "value"
                        },
                        "at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "value": {
                          "type": "number"
                        },
                        "pace": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "kind",
                        "at",
                        "value",
                        "pace"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "habit"
                        },
                        "from": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "to": {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        "actual": {
                          "type": "integer",
                          "minimum": -9007199254740991,
                          "maximum": 9007199254740991
                        },
                        "expected": {
                          "type": "number"
                        },
                        "expected_full": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "kind",
                        "from",
                        "to",
                        "actual",
                        "expected",
                        "expected_full"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "performance"
                        },
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        "at": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "value": {
                          "type": "number"
                        },
                        "target": {
                          "type": "number"
                        },
                        "gap": {
                          "type": "number"
                        },
                        "share": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "kind",
                        "id",
                        "at",
                        "value",
                        "target",
                        "gap",
                        "share"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "result_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "result_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "kind": {
                            "type": "string",
                            "const": "trend"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "result_id",
                          "operation",
                          "kind",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "kind": {
                "type": "string",
                "const": "trend"
              },
              "result_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "kind",
              "result_id",
              "window"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "result_write",
      "collection": "results",
      "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
      "operation": "create",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "results.create"
      ],
      "gap": null,
      "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "number"
                  },
                  "start_value": {
                    "type": "number"
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "operation": {
                    "type": "string",
                    "const": "create"
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value",
                  "operation"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "percentage"
                  },
                  "start_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "target_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "operation": {
                    "type": "string",
                    "const": "create"
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value",
                  "operation"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "milestone"
                  },
                  "operation": {
                    "type": "string",
                    "const": "create"
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "operation"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "habit"
                  },
                  "cadence": {
                    "type": "string",
                    "enum": [
                      "weekly",
                      "monthly"
                    ],
                    "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                  },
                  "per": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 9007199254740991,
                    "description": "UI label: Times per selected Cadence."
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "operation": {
                    "type": "string",
                    "const": "create"
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "cadence",
                  "per",
                  "operation"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "performance"
                  },
                  "start_value": {
                    "type": "number"
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "operation": {
                    "type": "string",
                    "const": "create"
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value",
                  "operation"
                ],
                "additionalProperties": false
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "objective_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "metric_type": {
                "type": "string",
                "enum": [
                  "number",
                  "percentage",
                  "milestone",
                  "habit",
                  "performance"
                ],
                "description": "UI label: Type. Number, Percentage, Milestone, Habit or Performance."
              },
              "target_value": {
                "type": "number"
              },
              "start_value": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "unit": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "cadence": {
                "type": "string",
                "enum": [
                  "weekly",
                  "monthly"
                ],
                "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
              },
              "per": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991,
                "description": "UI label: Times per selected Cadence."
              },
              "since": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
              },
              "status": {
                "type": "string",
                "enum": [
                  "in_progress",
                  "completed"
                ],
                "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
              },
              "operation": {
                "type": "string",
                "const": "update"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "result": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "number"
                  },
                  "start_value": {
                    "type": "number"
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Unit. Used by Number and Performance results."
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "null"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                  },
                  "boundary_value": {
                    "type": "number"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "percentage"
                  },
                  "start_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "target_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "unit": {
                    "type": "null"
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "null"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "boundary_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "milestone"
                  },
                  "start_value": {
                    "type": "number",
                    "const": 0
                  },
                  "target_value": {
                    "type": "number",
                    "const": 1
                  },
                  "unit": {
                    "type": "null"
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "null"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 0
                      },
                      {
                        "type": "number",
                        "const": 1
                      }
                    ]
                  },
                  "boundary_value": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 0
                      },
                      {
                        "type": "number",
                        "const": 1
                      }
                    ]
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "habit"
                  },
                  "start_value": {
                    "type": "number",
                    "const": 0
                  },
                  "target_value": {
                    "type": "number",
                    "const": 100
                  },
                  "unit": {
                    "type": "null"
                  },
                  "cadence": {
                    "type": "string",
                    "enum": [
                      "weekly",
                      "monthly"
                    ],
                    "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                  },
                  "per": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                  },
                  "boundary_value": {
                    "type": "number"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "performance"
                  },
                  "start_value": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Unit. Used by Number and Performance results."
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                  },
                  "boundary_value": {
                    "type": "number"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              }
            ]
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "result",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "result_write",
      "collection": "results",
      "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
      "operation": "update",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "results.update"
      ],
      "gap": null,
      "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "number"
                  },
                  "start_value": {
                    "type": "number"
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "operation": {
                    "type": "string",
                    "const": "create"
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value",
                  "operation"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "percentage"
                  },
                  "start_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "target_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "operation": {
                    "type": "string",
                    "const": "create"
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value",
                  "operation"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "milestone"
                  },
                  "operation": {
                    "type": "string",
                    "const": "create"
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "operation"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "habit"
                  },
                  "cadence": {
                    "type": "string",
                    "enum": [
                      "weekly",
                      "monthly"
                    ],
                    "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                  },
                  "per": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 9007199254740991,
                    "description": "UI label: Times per selected Cadence."
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "operation": {
                    "type": "string",
                    "const": "create"
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "cadence",
                  "per",
                  "operation"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "performance"
                  },
                  "start_value": {
                    "type": "number"
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "operation": {
                    "type": "string",
                    "const": "create"
                  }
                },
                "required": [
                  "objective_id",
                  "title",
                  "metric_type",
                  "target_value",
                  "operation"
                ],
                "additionalProperties": false
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "objective_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "metric_type": {
                "type": "string",
                "enum": [
                  "number",
                  "percentage",
                  "milestone",
                  "habit",
                  "performance"
                ],
                "description": "UI label: Type. Number, Percentage, Milestone, Habit or Performance."
              },
              "target_value": {
                "type": "number"
              },
              "start_value": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "unit": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "cadence": {
                "type": "string",
                "enum": [
                  "weekly",
                  "monthly"
                ],
                "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
              },
              "per": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991,
                "description": "UI label: Times per selected Cadence."
              },
              "since": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
              },
              "status": {
                "type": "string",
                "enum": [
                  "in_progress",
                  "completed"
                ],
                "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
              },
              "operation": {
                "type": "string",
                "const": "update"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "result": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "number"
                  },
                  "start_value": {
                    "type": "number"
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Unit. Used by Number and Performance results."
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "null"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                  },
                  "boundary_value": {
                    "type": "number"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "percentage"
                  },
                  "start_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "target_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "unit": {
                    "type": "null"
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "null"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "boundary_value": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "milestone"
                  },
                  "start_value": {
                    "type": "number",
                    "const": 0
                  },
                  "target_value": {
                    "type": "number",
                    "const": 1
                  },
                  "unit": {
                    "type": "null"
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "null"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 0
                      },
                      {
                        "type": "number",
                        "const": 1
                      }
                    ]
                  },
                  "boundary_value": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 0
                      },
                      {
                        "type": "number",
                        "const": 1
                      }
                    ]
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "habit"
                  },
                  "start_value": {
                    "type": "number",
                    "const": 0
                  },
                  "target_value": {
                    "type": "number",
                    "const": 100
                  },
                  "unit": {
                    "type": "null"
                  },
                  "cadence": {
                    "type": "string",
                    "enum": [
                      "weekly",
                      "monthly"
                    ],
                    "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                  },
                  "per": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                  },
                  "boundary_value": {
                    "type": "number"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "metric_type": {
                    "type": "string",
                    "const": "performance"
                  },
                  "start_value": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                  },
                  "target_value": {
                    "type": "number"
                  },
                  "unit": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Unit. Used by Number and Performance results."
                  },
                  "cadence": {
                    "type": "null"
                  },
                  "per": {
                    "type": "null"
                  },
                  "since": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "in_progress",
                      "completed"
                    ],
                    "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "short_code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "current_value": {
                    "type": "number",
                    "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                  },
                  "boundary_value": {
                    "type": "number"
                  },
                  "progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "boundary_progress_pct": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "movement_pp": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "last_recorded_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_expected_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "habit_logs_since_boundary": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "performance_share": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "objective_id",
                  "title",
                  "description",
                  "metric_type",
                  "start_value",
                  "target_value",
                  "unit",
                  "cadence",
                  "per",
                  "since",
                  "status",
                  "created_at",
                  "short_code",
                  "url",
                  "current_value",
                  "boundary_value",
                  "progress_pct",
                  "boundary_progress_pct",
                  "movement",
                  "movement_pp",
                  "evidence_count",
                  "last_recorded_at",
                  "habit_expected_since_boundary",
                  "habit_logs_since_boundary",
                  "performance_share"
                ],
                "additionalProperties": false
              }
            ]
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "result",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "result_delete",
      "collection": "results",
      "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
      "operation": "preview",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "results.preview_deletion"
      ],
      "gap": null,
      "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Exact owned record UUID. Resolve ambiguous targets before requesting impact."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Server preview ID for this target. Not consent: genuine approval must already be recorded by the trusted application."
              }
            },
            "required": [
              "operation",
              "id",
              "preview_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "target": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false
              },
              "deleted": {
                "type": "object",
                "properties": {
                  "results": {
                    "type": "number",
                    "const": 1
                  },
                  "result_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "habit_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "results",
                  "result_logs",
                  "habit_logs"
                ],
                "additionalProperties": false
              },
              "approval": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "const": "required"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "status",
                  "url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "preview_id",
              "expires_at",
              "target",
              "deleted",
              "approval"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "result_delete",
      "collection": "results",
      "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
      "operation": "commit",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "results.delete"
      ],
      "gap": null,
      "projection": "Project record.result and changed on writes; history preserves its resolved window, kind and cursor; list preserves parent/attention filters.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Exact owned record UUID. Resolve ambiguous targets before requesting impact."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Server preview ID for this target. Not consent: genuine approval must already be recorded by the trusted application."
              }
            },
            "required": [
              "operation",
              "id",
              "preview_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "target": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false
              },
              "deleted": {
                "type": "object",
                "properties": {
                  "results": {
                    "type": "number",
                    "const": 1
                  },
                  "result_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "habit_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "results",
                  "result_logs",
                  "habit_logs"
                ],
                "additionalProperties": false
              },
              "approval": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "const": "required"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "status",
                  "url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "preview_id",
              "expires_at",
              "target",
              "deleted",
              "approval"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "action_read",
      "collection": "actions",
      "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
      "operation": "list",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "actions.list"
      ],
      "gap": null,
      "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "in_progress",
                  "done"
                ],
                "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
              },
              "due_before": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
              },
              "outstanding": {
                "description": "Only open or in_progress actions; exclude done across every page.",
                "type": "boolean",
                "const": true
              },
              "session_id": {
                "description": "Filter actions created in this owned session; combine with cycle_id to select its cycle explicitly.",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "overdue": {
                "description": "Only non-done actions before due_before; requires an explicit local cutoff date for stable briefing pagination.",
                "type": "boolean",
                "const": true
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "get"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "enum": [
                          "last_session",
                          "cycle_start"
                        ]
                      }
                    ]
                  },
                  "until": {
                    "description": "Exclusive upper bound; default is the server time captured on the first page.",
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "action_id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "cycle_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "objective_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "due_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "open",
                        "in_progress",
                        "done"
                      ],
                      "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                    },
                    "sort_order": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Drag order within an action group; not a progress status."
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "overdue": {
                      "type": "boolean"
                    },
                    "done_since_boundary": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "id",
                    "cycle_id",
                    "objective_id",
                    "title",
                    "description",
                    "due_at",
                    "status",
                    "sort_order",
                    "session_id",
                    "created_at",
                    "url",
                    "overdue",
                    "done_since_boundary"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "action_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "cycle_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "objective_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "open",
                              "in_progress",
                              "done"
                            ],
                            "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                          },
                          "due_before": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          "outstanding": {
                            "description": "Only open or in_progress actions; exclude done across every page.",
                            "type": "boolean",
                            "const": true
                          },
                          "session_id": {
                            "description": "Filter actions created in this owned session; combine with cycle_id to select its cycle explicitly.",
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                          },
                          "overdue": {
                            "description": "Only non-done actions before due_before; requires an explicit local cutoff date for stable briefing pagination.",
                            "type": "boolean",
                            "const": true
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "cycle_id",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "action": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "done"
                    ],
                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                  },
                  "sort_order": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Drag order within an action group; not a progress status."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "overdue": {
                    "type": "boolean"
                  },
                  "done_since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "objective_id",
                  "title",
                  "description",
                  "due_at",
                  "status",
                  "sort_order",
                  "session_id",
                  "created_at",
                  "url",
                  "overdue",
                  "done_since_boundary"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "action"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "action_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "open",
                        "in_progress",
                        "done"
                      ],
                      "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                    },
                    "comment": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "recorded_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "action_id",
                    "status",
                    "comment",
                    "session_id",
                    "recorded_at"
                  ],
                  "additionalProperties": false,
                  "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "action_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "action_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "action_id",
                          "operation",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "action_id",
              "window"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "action_read",
      "collection": "actions",
      "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
      "operation": "get",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "actions.get"
      ],
      "gap": null,
      "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "in_progress",
                  "done"
                ],
                "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
              },
              "due_before": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
              },
              "outstanding": {
                "description": "Only open or in_progress actions; exclude done across every page.",
                "type": "boolean",
                "const": true
              },
              "session_id": {
                "description": "Filter actions created in this owned session; combine with cycle_id to select its cycle explicitly.",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "overdue": {
                "description": "Only non-done actions before due_before; requires an explicit local cutoff date for stable briefing pagination.",
                "type": "boolean",
                "const": true
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "get"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "enum": [
                          "last_session",
                          "cycle_start"
                        ]
                      }
                    ]
                  },
                  "until": {
                    "description": "Exclusive upper bound; default is the server time captured on the first page.",
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "action_id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "cycle_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "objective_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "due_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "open",
                        "in_progress",
                        "done"
                      ],
                      "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                    },
                    "sort_order": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Drag order within an action group; not a progress status."
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "overdue": {
                      "type": "boolean"
                    },
                    "done_since_boundary": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "id",
                    "cycle_id",
                    "objective_id",
                    "title",
                    "description",
                    "due_at",
                    "status",
                    "sort_order",
                    "session_id",
                    "created_at",
                    "url",
                    "overdue",
                    "done_since_boundary"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "action_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "cycle_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "objective_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "open",
                              "in_progress",
                              "done"
                            ],
                            "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                          },
                          "due_before": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          "outstanding": {
                            "description": "Only open or in_progress actions; exclude done across every page.",
                            "type": "boolean",
                            "const": true
                          },
                          "session_id": {
                            "description": "Filter actions created in this owned session; combine with cycle_id to select its cycle explicitly.",
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                          },
                          "overdue": {
                            "description": "Only non-done actions before due_before; requires an explicit local cutoff date for stable briefing pagination.",
                            "type": "boolean",
                            "const": true
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "cycle_id",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "action": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "done"
                    ],
                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                  },
                  "sort_order": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Drag order within an action group; not a progress status."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "overdue": {
                    "type": "boolean"
                  },
                  "done_since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "objective_id",
                  "title",
                  "description",
                  "due_at",
                  "status",
                  "sort_order",
                  "session_id",
                  "created_at",
                  "url",
                  "overdue",
                  "done_since_boundary"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "action"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "action_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "open",
                        "in_progress",
                        "done"
                      ],
                      "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                    },
                    "comment": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "recorded_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "action_id",
                    "status",
                    "comment",
                    "session_id",
                    "recorded_at"
                  ],
                  "additionalProperties": false,
                  "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "action_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "action_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "action_id",
                          "operation",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "action_id",
              "window"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "action_read",
      "collection": "actions",
      "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
      "operation": "history",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "actions.history"
      ],
      "gap": null,
      "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "in_progress",
                  "done"
                ],
                "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
              },
              "due_before": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
              },
              "outstanding": {
                "description": "Only open or in_progress actions; exclude done across every page.",
                "type": "boolean",
                "const": true
              },
              "session_id": {
                "description": "Filter actions created in this owned session; combine with cycle_id to select its cycle explicitly.",
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "overdue": {
                "description": "Only non-done actions before due_before; requires an explicit local cutoff date for stable briefing pagination.",
                "type": "boolean",
                "const": true
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "get"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "enum": [
                          "last_session",
                          "cycle_start"
                        ]
                      }
                    ]
                  },
                  "until": {
                    "description": "Exclusive upper bound; default is the server time captured on the first page.",
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "required": [
              "action_id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "cycle_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "objective_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "title": {
                      "type": "string"
                    },
                    "description": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "due_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                          "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "open",
                        "in_progress",
                        "done"
                      ],
                      "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                    },
                    "sort_order": {
                      "anyOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Drag order within an action group; not a progress status."
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "overdue": {
                      "type": "boolean"
                    },
                    "done_since_boundary": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "id",
                    "cycle_id",
                    "objective_id",
                    "title",
                    "description",
                    "due_at",
                    "status",
                    "sort_order",
                    "session_id",
                    "created_at",
                    "url",
                    "overdue",
                    "done_since_boundary"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "action_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "cycle_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "objective_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "open",
                              "in_progress",
                              "done"
                            ],
                            "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                          },
                          "due_before": {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          "outstanding": {
                            "description": "Only open or in_progress actions; exclude done across every page.",
                            "type": "boolean",
                            "const": true
                          },
                          "session_id": {
                            "description": "Filter actions created in this owned session; combine with cycle_id to select its cycle explicitly.",
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                          },
                          "overdue": {
                            "description": "Only non-done actions before due_before; requires an explicit local cutoff date for stable briefing pagination.",
                            "type": "boolean",
                            "const": true
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "cycle_id",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "action": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "done"
                    ],
                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                  },
                  "sort_order": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Drag order within an action group; not a progress status."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "overdue": {
                    "type": "boolean"
                  },
                  "done_since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "objective_id",
                  "title",
                  "description",
                  "due_at",
                  "status",
                  "sort_order",
                  "session_id",
                  "created_at",
                  "url",
                  "overdue",
                  "done_since_boundary"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "action"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "action_id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "open",
                        "in_progress",
                        "done"
                      ],
                      "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                    },
                    "comment": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "session_id": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                          "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "recorded_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    }
                  },
                  "required": [
                    "id",
                    "action_id",
                    "status",
                    "comment",
                    "session_id",
                    "recorded_at"
                  ],
                  "additionalProperties": false,
                  "description": "Action log stored in action_logs. Records a status observation and optional comment. Action detail shows Comments, a filtered view rather than the complete status history; status and timestamps are immutable, and only the comment may be cleared."
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "action_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "action_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "operation": {
                            "type": "string",
                            "const": "history"
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "action_id",
                          "operation",
                          "window"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "history"
              },
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "until": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  }
                },
                "required": [
                  "since",
                  "until"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "action_id",
              "window"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "action_write",
      "collection": "actions",
      "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
      "operation": "create",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "actions.create"
      ],
      "gap": null,
      "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "title": {
                "type": "string",
                "minLength": 1
              },
              "due_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "create"
              }
            },
            "required": [
              "title",
              "due_at",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "due_at": {
                "description": "New due date. Omit to preserve; a previously set date cannot be cleared.",
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "session_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "update"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "action": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "title": {
                "type": "string"
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "due_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "in_progress",
                  "done"
                ],
                "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
              },
              "sort_order": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Drag order within an action group; not a progress status."
              },
              "session_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "overdue": {
                "type": "boolean"
              },
              "done_since_boundary": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "cycle_id",
              "objective_id",
              "title",
              "description",
              "due_at",
              "status",
              "sort_order",
              "session_id",
              "created_at",
              "url",
              "overdue",
              "done_since_boundary"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "action",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "action_write",
      "collection": "actions",
      "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
      "operation": "update",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "actions.update"
      ],
      "gap": null,
      "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "title": {
                "type": "string",
                "minLength": 1
              },
              "due_at": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "create"
              }
            },
            "required": [
              "title",
              "due_at",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "title": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "due_at": {
                "description": "New due date. Omit to preserve; a previously set date cannot be cleared.",
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "session_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "update"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "action": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "cycle_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "objective_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "title": {
                "type": "string"
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "due_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "in_progress",
                  "done"
                ],
                "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
              },
              "sort_order": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Drag order within an action group; not a progress status."
              },
              "session_id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "created_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "overdue": {
                "type": "boolean"
              },
              "done_since_boundary": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "cycle_id",
              "objective_id",
              "title",
              "description",
              "due_at",
              "status",
              "sort_order",
              "session_id",
              "created_at",
              "url",
              "overdue",
              "done_since_boundary"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "action",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "action_delete",
      "collection": "actions",
      "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
      "operation": "preview",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "actions.preview_deletion"
      ],
      "gap": null,
      "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Exact owned record UUID. Resolve ambiguous targets before requesting impact."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Server preview ID for this target. Not consent: genuine approval must already be recorded by the trusted application."
              }
            },
            "required": [
              "operation",
              "id",
              "preview_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "target": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false
              },
              "deleted": {
                "type": "object",
                "properties": {
                  "actions": {
                    "type": "number",
                    "const": 1
                  },
                  "action_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "actions",
                  "action_logs"
                ],
                "additionalProperties": false
              },
              "approval": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "const": "required"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "status",
                  "url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "preview_id",
              "expires_at",
              "target",
              "deleted",
              "approval"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "action_delete",
      "collection": "actions",
      "specification": "docs/feature-specs/F5-actions.md#mcp-source-mapping--selected-target",
      "operation": "commit",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "actions.delete"
      ],
      "gap": null,
      "projection": "Project record.action and changed on writes; list uses resolved cycle_id and original filters; history preserves its resolved window.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Exact owned record UUID. Resolve ambiguous targets before requesting impact."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Server preview ID for this target. Not consent: genuine approval must already be recorded by the trusted application."
              }
            },
            "required": [
              "operation",
              "id",
              "preview_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "target": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "title": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "title"
                ],
                "additionalProperties": false
              },
              "deleted": {
                "type": "object",
                "properties": {
                  "actions": {
                    "type": "number",
                    "const": 1
                  },
                  "action_logs": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "actions",
                  "action_logs"
                ],
                "additionalProperties": false
              },
              "approval": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "const": "required"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "status",
                  "url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "preview_id",
              "expires_at",
              "target",
              "deleted",
              "approval"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "note_read",
      "collection": "notes",
      "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
      "operation": "list",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "notes.list"
      ],
      "gap": null,
      "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "enum": [
                          "last_session",
                          "cycle_start"
                        ]
                      }
                    ]
                  },
                  "until": {
                    "description": "Exclusive upper bound; default is the server time captured on the first page.",
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "get"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "text": {
                      "type": "string",
                      "minLength": 1
                    },
                    "recorded_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "since_boundary": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "id",
                    "text",
                    "recorded_at",
                    "url",
                    "since_boundary"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "note_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              },
              "window": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "since": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "until": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    },
                    "required": [
                      "since",
                      "until"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "window"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "note": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "text": {
                    "type": "string",
                    "minLength": 1
                  },
                  "recorded_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "text",
                  "recorded_at",
                  "url",
                  "since_boundary"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "note"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "note_read",
      "collection": "notes",
      "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
      "operation": "get",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "notes.get"
      ],
      "gap": null,
      "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "enum": [
                          "last_session",
                          "cycle_start"
                        ]
                      }
                    ]
                  },
                  "until": {
                    "description": "Exclusive upper bound; default is the server time captured on the first page.",
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "operation": {
                "type": "string",
                "const": "get"
              }
            },
            "required": [
              "id",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "text": {
                      "type": "string",
                      "minLength": 1
                    },
                    "recorded_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "since_boundary": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "id",
                    "text",
                    "recorded_at",
                    "url",
                    "since_boundary"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "note_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              },
              "window": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "since": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "until": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    },
                    "required": [
                      "since",
                      "until"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "window"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "note": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "text": {
                    "type": "string",
                    "minLength": 1
                  },
                  "recorded_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "text",
                  "recorded_at",
                  "url",
                  "since_boundary"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "note"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "note_write",
      "collection": "notes",
      "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
      "operation": "create",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "notes.create"
      ],
      "gap": null,
      "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "minLength": 1
              },
              "operation": {
                "type": "string",
                "const": "create"
              }
            },
            "required": [
              "text",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "text": {
                "type": "string",
                "minLength": 1
              },
              "operation": {
                "type": "string",
                "const": "update"
              }
            },
            "required": [
              "id",
              "text",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "note": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "text": {
                "type": "string",
                "minLength": 1
              },
              "recorded_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "since_boundary": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "text",
              "recorded_at",
              "url",
              "since_boundary"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "note",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "note_write",
      "collection": "notes",
      "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
      "operation": "update",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "notes.update"
      ],
      "gap": null,
      "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "minLength": 1
              },
              "operation": {
                "type": "string",
                "const": "create"
              }
            },
            "required": [
              "text",
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "text": {
                "type": "string",
                "minLength": 1
              },
              "operation": {
                "type": "string",
                "const": "update"
              }
            },
            "required": [
              "id",
              "text",
              "operation"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "note": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "text": {
                "type": "string",
                "minLength": 1
              },
              "recorded_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "since_boundary": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "text",
              "recorded_at",
              "url",
              "since_boundary"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "note",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "note_delete",
      "collection": "notes",
      "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
      "operation": "preview",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "notes.preview_deletion"
      ],
      "gap": null,
      "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Exact owned record UUID. Resolve ambiguous targets before requesting impact."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Server preview ID for this target. Not consent: genuine approval must already be recorded by the trusted application."
              }
            },
            "required": [
              "operation",
              "id",
              "preview_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "target": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "text": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "required": [
                  "id",
                  "text"
                ],
                "additionalProperties": false
              },
              "deleted": {
                "type": "object",
                "properties": {
                  "notes": {
                    "type": "number",
                    "const": 1
                  }
                },
                "required": [
                  "notes"
                ],
                "additionalProperties": false
              },
              "approval": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "const": "required"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "status",
                  "url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "preview_id",
              "expires_at",
              "target",
              "deleted",
              "approval"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "note_delete",
      "collection": "notes",
      "specification": "docs/feature-specs/F6-notes.md#mcp-source-mapping--selected-target",
      "operation": "commit",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "notes.delete"
      ],
      "gap": null,
      "projection": "Project record and changed on writes; list preserves its resolved window; get returns note only.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Exact owned record UUID. Resolve ambiguous targets before requesting impact."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Server preview ID for this target. Not consent: genuine approval must already be recorded by the trusted application."
              }
            },
            "required": [
              "operation",
              "id",
              "preview_id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "preview"
              },
              "preview_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "target": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "text": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "required": [
                  "id",
                  "text"
                ],
                "additionalProperties": false
              },
              "deleted": {
                "type": "object",
                "properties": {
                  "notes": {
                    "type": "number",
                    "const": 1
                  }
                },
                "required": [
                  "notes"
                ],
                "additionalProperties": false
              },
              "approval": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "const": "required"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "status",
                  "url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "preview_id",
              "expires_at",
              "target",
              "deleted",
              "approval"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "commit"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "user_read",
      "collection": "user",
      "specification": "docs/feature-specs/F1-identity.md#mcp-source-mapping--selected-target",
      "operation": "call",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "user.get"
      ],
      "gap": null,
      "projection": "Project permitted coaching profile only; user_update additionally requires MCP entitlement.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "profile": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "name": {
                "type": "string",
                "description": "Chosen coaching/display name, used verbatim. Target UI prompt: What should we call you? Empty means unknown; no separate surname."
              },
              "about_me": {
                "type": "string",
                "description": "UI label: About me."
              },
              "timezone": {
                "type": "string",
                "minLength": 1,
                "description": "UI label: Time zone. IANA zone used for calendar dates and boundaries."
              }
            },
            "required": [
              "id",
              "name",
              "about_me",
              "timezone"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "profile"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "user_update",
      "collection": "user",
      "specification": "docs/feature-specs/F1-identity.md#mcp-source-mapping--selected-target",
      "operation": "call",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "user.update"
      ],
      "gap": null,
      "projection": "Project permitted coaching profile only; user_update additionally requires MCP entitlement.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "name": {
            "description": "Chosen coaching/display name; use verbatim. Omit to preserve, empty text clears it.",
            "type": "string"
          },
          "about_me": {
            "description": "UI label: About me. Coaching context; omit to preserve, empty text clears it, null is invalid.",
            "type": "string",
            "maxLength": 4000
          },
          "timezone": {
            "type": "string",
            "description": "UI label: Time zone. IANA zone used for calendar dates and boundaries."
          }
        },
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "profile": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "name": {
                "type": "string",
                "description": "Chosen coaching/display name, used verbatim. Target UI prompt: What should we call you? Empty means unknown; no separate surname."
              },
              "about_me": {
                "type": "string",
                "description": "UI label: About me."
              },
              "timezone": {
                "type": "string",
                "minLength": 1,
                "description": "UI label: Time zone. IANA zone used for calendar dates and boundaries."
              }
            },
            "required": [
              "id",
              "name",
              "about_me",
              "timezone"
            ],
            "additionalProperties": false
          },
          "changed": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "entity": {
                  "type": "string",
                  "enum": [
                    "user",
                    "cycle",
                    "objective",
                    "result",
                    "result_log",
                    "action",
                    "action_log",
                    "session",
                    "note",
                    "habit_log"
                  ]
                },
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                }
              },
              "required": [
                "entity",
                "id"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "profile",
          "changed"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "session_read",
      "collection": "sessions",
      "specification": "docs/feature-specs/F7-sessions.md#mcp-source-mapping--selected-target",
      "operation": "list",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "sessions.list"
      ],
      "gap": null,
      "projection": "List omits documents and preserves resolved window/boundary; stored get preserves nullable session; start explicitly constructs the compact MCP briefing and supported-reader continuations; close preserves saved outcome.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "enum": [
                          "last_session",
                          "cycle_start"
                        ]
                      }
                    ]
                  },
                  "until": {
                    "description": "Exclusive upper bound; default is the server time captured on the first page.",
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "string",
                    "const": "last_completed"
                  }
                ],
                "description": "Exact session UUID, or last_completed for the most recently ended session; returns null when none exists."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "vendor": {
                      "type": "string",
                      "enum": [
                        "claude",
                        "openai"
                      ],
                      "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                    },
                    "source_url": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uri"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "External conversation link used by Open the conversation. Not the app detail URL."
                    },
                    "type": {
                      "anyOf": [
                        {
                          "type": "string",
                          "enum": [
                            "goal_setup",
                            "check_in",
                            "review",
                            "open_coaching"
                          ],
                          "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "headline": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "One-line coaching-session summary used in session lists."
                    },
                    "started_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "ended_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                    },
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "Internal app link to coaching session details; distinct from source_url."
                    },
                    "duration_minutes": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "actions_created": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "actions_reviewed": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "id",
                    "vendor",
                    "source_url",
                    "type",
                    "headline",
                    "started_at",
                    "ended_at",
                    "url",
                    "duration_minutes",
                    "actions_created",
                    "actions_reviewed"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "session_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              },
              "window": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "since": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "until": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    },
                    "required": [
                      "since",
                      "until"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "boundary": {
                "type": "object",
                "properties": {
                  "at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "source": {
                    "type": "string",
                    "enum": [
                      "session",
                      "cycle_start",
                      "none"
                    ]
                  }
                },
                "required": [
                  "at",
                  "session_id",
                  "source"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "window",
              "boundary"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "session": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "vendor": {
                        "type": "string",
                        "enum": [
                          "claude",
                          "openai"
                        ],
                        "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                      },
                      "source_url": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uri"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "External conversation link used by Open the conversation. Not the app detail URL."
                      },
                      "type": {
                        "anyOf": [
                          {
                            "type": "string",
                            "enum": [
                              "goal_setup",
                              "check_in",
                              "review",
                              "open_coaching"
                            ],
                            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "briefing_notes": {
                        "type": "string",
                        "description": "UI document: Briefing. Server-prepared coaching context."
                      },
                      "headline": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "One-line coaching-session summary used in session lists."
                      },
                      "summary_notes": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI document: Summary. Saved when the coaching session closes."
                      },
                      "started_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "ended_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                      },
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Internal app link to coaching session details; distinct from source_url."
                      },
                      "duration_minutes": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "actions_created": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "actions_reviewed": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "required": [
                      "id",
                      "vendor",
                      "source_url",
                      "type",
                      "briefing_notes",
                      "headline",
                      "summary_notes",
                      "started_at",
                      "ended_at",
                      "url",
                      "duration_minutes",
                      "actions_created",
                      "actions_reviewed"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "boundary": {
                "type": "object",
                "properties": {
                  "at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "source": {
                    "type": "string",
                    "enum": [
                      "session",
                      "cycle_start",
                      "none"
                    ]
                  }
                },
                "required": [
                  "at",
                  "session_id",
                  "source"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "session",
              "boundary"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "session_read",
      "collection": "sessions",
      "specification": "docs/feature-specs/F7-sessions.md#mcp-source-mapping--selected-target",
      "operation": "get",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "sessions.get_stored"
      ],
      "gap": null,
      "projection": "List omits documents and preserves resolved window/boundary; stored get preserves nullable session; start explicitly constructs the compact MCP briefing and supported-reader continuations; close preserves saved outcome.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cursor": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "default": 20,
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "window": {
                "type": "object",
                "properties": {
                  "since": {
                    "description": "Inclusive lower bound. Default: last completed session, falling back to active-cycle start. Date-only values use the profile timezone.",
                    "anyOf": [
                      {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                            "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                          },
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          }
                        ]
                      },
                      {
                        "type": "string",
                        "enum": [
                          "last_session",
                          "cycle_start"
                        ]
                      }
                    ]
                  },
                  "until": {
                    "description": "Exclusive upper bound; default is the server time captured on the first page.",
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              "operation": {
                "type": "string",
                "const": "list"
              }
            },
            "required": [
              "operation"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "id": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  {
                    "type": "string",
                    "const": "last_completed"
                  }
                ],
                "description": "Exact session UUID, or last_completed for the most recently ended session; returns null when none exists."
              }
            },
            "required": [
              "operation",
              "id"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "items": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    },
                    "vendor": {
                      "type": "string",
                      "enum": [
                        "claude",
                        "openai"
                      ],
                      "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                    },
                    "source_url": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "uri"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "External conversation link used by Open the conversation. Not the app detail URL."
                    },
                    "type": {
                      "anyOf": [
                        {
                          "type": "string",
                          "enum": [
                            "goal_setup",
                            "check_in",
                            "review",
                            "open_coaching"
                          ],
                          "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "headline": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "One-line coaching-session summary used in session lists."
                    },
                    "started_at": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                    },
                    "ended_at": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                    },
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "Internal app link to coaching session details; distinct from source_url."
                    },
                    "duration_minutes": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "actions_created": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    },
                    "actions_reviewed": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "id",
                    "vendor",
                    "source_url",
                    "type",
                    "headline",
                    "started_at",
                    "ended_at",
                    "url",
                    "duration_minutes",
                    "actions_created",
                    "actions_reviewed"
                  ],
                  "additionalProperties": false
                }
              },
              "next_cursor": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "continuation": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "tool": {
                        "type": "string",
                        "const": "session_read"
                      },
                      "arguments": {
                        "type": "object",
                        "properties": {
                          "cursor": {
                            "type": "string",
                            "minLength": 1
                          },
                          "limit": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100
                          },
                          "window": {
                            "type": "object",
                            "properties": {
                              "since": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "until": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              }
                            },
                            "required": [
                              "since",
                              "until"
                            ],
                            "additionalProperties": false
                          },
                          "operation": {
                            "type": "string",
                            "const": "list"
                          }
                        },
                        "required": [
                          "cursor",
                          "limit",
                          "operation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "tool",
                      "arguments"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "operation": {
                "type": "string",
                "const": "list"
              },
              "window": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "since": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "until": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      }
                    },
                    "required": [
                      "since",
                      "until"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "boundary": {
                "type": "object",
                "properties": {
                  "at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "source": {
                    "type": "string",
                    "enum": [
                      "session",
                      "cycle_start",
                      "none"
                    ]
                  }
                },
                "required": [
                  "at",
                  "session_id",
                  "source"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "items",
              "next_cursor",
              "continuation",
              "operation",
              "window",
              "boundary"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "operation": {
                "type": "string",
                "const": "get"
              },
              "session": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "vendor": {
                        "type": "string",
                        "enum": [
                          "claude",
                          "openai"
                        ],
                        "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                      },
                      "source_url": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "uri"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "External conversation link used by Open the conversation. Not the app detail URL."
                      },
                      "type": {
                        "anyOf": [
                          {
                            "type": "string",
                            "enum": [
                              "goal_setup",
                              "check_in",
                              "review",
                              "open_coaching"
                            ],
                            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "briefing_notes": {
                        "type": "string",
                        "description": "UI document: Briefing. Server-prepared coaching context."
                      },
                      "headline": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "One-line coaching-session summary used in session lists."
                      },
                      "summary_notes": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI document: Summary. Saved when the coaching session closes."
                      },
                      "started_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "ended_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                      },
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Internal app link to coaching session details; distinct from source_url."
                      },
                      "duration_minutes": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "actions_created": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "actions_reviewed": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      }
                    },
                    "required": [
                      "id",
                      "vendor",
                      "source_url",
                      "type",
                      "briefing_notes",
                      "headline",
                      "summary_notes",
                      "started_at",
                      "ended_at",
                      "url",
                      "duration_minutes",
                      "actions_created",
                      "actions_reviewed"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "boundary": {
                "type": "object",
                "properties": {
                  "at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "source": {
                    "type": "string",
                    "enum": [
                      "session",
                      "cycle_start",
                      "none"
                    ]
                  }
                },
                "required": [
                  "at",
                  "session_id",
                  "source"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "operation",
              "session",
              "boundary"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "session_start",
      "collection": "sessions",
      "specification": "docs/feature-specs/F7-sessions.md#mcp-source-mapping--selected-target",
      "operation": "call",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "sessions.start"
      ],
      "gap": null,
      "projection": "List omits documents and preserves resolved window/boundary; stored get preserves nullable session; start explicitly constructs the compact MCP briefing and supported-reader continuations; close preserves saved outcome.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "force_new": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "access_state": {
                "type": "string",
                "const": "active"
              },
              "session": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "started_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "stale": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "started_at"
                ],
                "additionalProperties": false
              },
              "briefing_notes": {
                "type": "string"
              },
              "briefing": {
                "type": "object",
                "properties": {
                  "as_of": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "current": {
                    "type": "object",
                    "properties": {
                      "profile": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "name": {
                            "type": "string",
                            "description": "Chosen coaching/display name, used verbatim. Target UI prompt: What should we call you? Empty means unknown; no separate surname."
                          },
                          "about_me": {
                            "type": "string",
                            "description": "UI label: About me."
                          },
                          "timezone": {
                            "type": "string",
                            "minLength": 1,
                            "description": "UI label: Time zone. IANA zone used for calendar dates and boundaries."
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "about_me",
                          "timezone"
                        ],
                        "additionalProperties": false
                      },
                      "boundary": {
                        "type": "object",
                        "properties": {
                          "at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "session_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "session",
                              "cycle_start",
                              "none"
                            ]
                          }
                        },
                        "required": [
                          "at",
                          "session_id",
                          "source"
                        ],
                        "additionalProperties": false
                      },
                      "cycle_line": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "range": {
                                "type": "string"
                              },
                              "time_gone_pct": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 100
                              }
                            },
                            "required": [
                              "range",
                              "time_gone_pct"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "cycles": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "intention": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                                },
                                "start_at": {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "UI label: Starts."
                                },
                                "end_at": {
                                  "type": "string",
                                  "format": "date",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                  "description": "UI label: Ends."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "active",
                                    "archived"
                                  ]
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "achievement_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                                },
                                "time_gone_pct": {
                                  "type": "number",
                                  "minimum": 0,
                                  "maximum": 100,
                                  "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                                },
                                "length_weeks": {
                                  "type": "integer",
                                  "minimum": -9007199254740991,
                                  "maximum": 9007199254740991,
                                  "description": "UI label: Length, in weeks; derived from Starts and Ends."
                                }
                              },
                              "required": [
                                "id",
                                "intention",
                                "start_at",
                                "end_at",
                                "status",
                                "created_at",
                                "url",
                                "achievement_pct",
                                "time_gone_pct",
                                "length_weeks"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "continuation": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "tool": {
                                    "type": "string",
                                    "const": "cycle_read"
                                  },
                                  "arguments": {
                                    "type": "object",
                                    "properties": {
                                      "cursor": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "limit": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 100
                                      },
                                      "operation": {
                                        "type": "string",
                                        "const": "list"
                                      }
                                    },
                                    "required": [
                                      "cursor",
                                      "limit",
                                      "operation"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "tool",
                                  "arguments"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor",
                          "continuation"
                        ],
                        "additionalProperties": false
                      },
                      "cycle": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "intention": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "UI label: Intention. Optional guiding focus; the cycle is identified by its date range, not a name."
                              },
                              "start_at": {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "UI label: Starts."
                              },
                              "end_at": {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "UI label: Ends."
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "active",
                                  "archived"
                                ]
                              },
                              "created_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "achievement_pct": {
                                "anyOf": [
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "UI label: Achievement. Derived from objective progress; unavailable when nothing is measurable."
                              },
                              "time_gone_pct": {
                                "type": "number",
                                "minimum": 0,
                                "maximum": 100,
                                "description": "UI label: Time gone. Derived percentage of the cycle elapsed."
                              },
                              "length_weeks": {
                                "type": "integer",
                                "minimum": -9007199254740991,
                                "maximum": 9007199254740991,
                                "description": "UI label: Length, in weeks; derived from Starts and Ends."
                              }
                            },
                            "required": [
                              "id",
                              "intention",
                              "start_at",
                              "end_at",
                              "status",
                              "created_at",
                              "url",
                              "achievement_pct",
                              "time_gone_pct",
                              "length_weeks"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "objectives": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "cycle_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "deadline_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Deadline; null when no deadline has been set."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "on_track",
                                    "off_track",
                                    "completed"
                                  ],
                                  "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "short_code": {
                                  "type": "string",
                                  "minLength": 1
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Progress. Derived from measurable results, independently of Status."
                                },
                                "boundary_progress_pct": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "Historical progress at the resolved last-session boundary; not current Progress."
                                },
                                "movement_pp": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "cycle_id",
                                "title",
                                "description",
                                "deadline_at",
                                "status",
                                "created_at",
                                "short_code",
                                "url",
                                "progress_pct",
                                "boundary_progress_pct",
                                "movement_pp"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "continuation": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "tool": {
                                    "type": "string",
                                    "const": "objective_read"
                                  },
                                  "arguments": {
                                    "type": "object",
                                    "properties": {
                                      "cursor": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "limit": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 100
                                      },
                                      "cycle_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "operation": {
                                        "type": "string",
                                        "const": "list"
                                      }
                                    },
                                    "required": [
                                      "cursor",
                                      "limit",
                                      "cycle_id",
                                      "operation"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "tool",
                                  "arguments"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor",
                          "continuation"
                        ],
                        "additionalProperties": false
                      },
                      "results": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "number"
                                    },
                                    "start_value": {
                                      "type": "number"
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "percentage"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "boundary_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "milestone"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 1
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "boundary_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "habit"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "string",
                                      "enum": [
                                        "weekly",
                                        "monthly"
                                      ],
                                      "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                    },
                                    "per": {
                                      "type": "integer",
                                      "exclusiveMinimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "performance"
                                    },
                                    "start_value": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                }
                              ]
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "continuation": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "tool": {
                                    "type": "string",
                                    "const": "result_read"
                                  },
                                  "arguments": {
                                    "type": "object",
                                    "properties": {
                                      "cursor": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "limit": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 100
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "cycle_id": {
                                        "description": "List results across one cycle instead of a single objective. Supply exactly one parent selector.",
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                                      },
                                      "attention": {
                                        "description": "Optional briefing subset: no evidence ever, no update in the window, or habit with no mark in the window.",
                                        "type": "string",
                                        "enum": [
                                          "never_updated",
                                          "silent",
                                          "unmarked"
                                        ]
                                      },
                                      "window": {
                                        "description": "Required for silent/unmarked attention. Use exact server-resolved briefing bounds; current result figures remain current.",
                                        "type": "object",
                                        "properties": {
                                          "since": {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          "until": {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          }
                                        },
                                        "required": [
                                          "since",
                                          "until"
                                        ],
                                        "additionalProperties": false
                                      },
                                      "operation": {
                                        "type": "string",
                                        "const": "list"
                                      }
                                    },
                                    "required": [
                                      "cursor",
                                      "limit",
                                      "operation"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "tool",
                                  "arguments"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor",
                          "continuation"
                        ],
                        "additionalProperties": false
                      },
                      "actions": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "cycle_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "due_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "open",
                                    "in_progress",
                                    "done"
                                  ],
                                  "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                                },
                                "sort_order": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "Drag order within an action group; not a progress status."
                                },
                                "session_id": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "overdue": {
                                  "type": "boolean"
                                },
                                "done_since_boundary": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "id",
                                "cycle_id",
                                "objective_id",
                                "title",
                                "description",
                                "due_at",
                                "status",
                                "sort_order",
                                "session_id",
                                "created_at",
                                "url",
                                "overdue",
                                "done_since_boundary"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "continuation": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "tool": {
                                    "type": "string",
                                    "const": "action_read"
                                  },
                                  "arguments": {
                                    "type": "object",
                                    "properties": {
                                      "cursor": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "limit": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 100
                                      },
                                      "cycle_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "uuid",
                                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "open",
                                          "in_progress",
                                          "done"
                                        ],
                                        "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                                      },
                                      "due_before": {
                                        "type": "string",
                                        "format": "date",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                      },
                                      "outstanding": {
                                        "type": "boolean",
                                        "const": true
                                      },
                                      "session_id": {
                                        "description": "Filter actions created in this owned session; combine with cycle_id to select its cycle explicitly.",
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                                      },
                                      "overdue": {
                                        "description": "Only non-done actions before due_before; requires an explicit local cutoff date for stable briefing pagination.",
                                        "type": "boolean",
                                        "const": true
                                      },
                                      "operation": {
                                        "type": "string",
                                        "const": "list"
                                      }
                                    },
                                    "required": [
                                      "cursor",
                                      "limit",
                                      "cycle_id",
                                      "outstanding",
                                      "operation"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "tool",
                                  "arguments"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor",
                          "continuation"
                        ],
                        "additionalProperties": false
                      },
                      "notes": {
                        "type": "object",
                        "properties": {
                          "notes": {
                            "type": "object",
                            "properties": {
                              "items": {
                                "maxItems": 50,
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "text": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "recorded_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "since_boundary": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "text",
                                    "recorded_at",
                                    "url",
                                    "since_boundary"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "next_cursor": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "continuation": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "tool": {
                                        "type": "string",
                                        "const": "note_read"
                                      },
                                      "arguments": {
                                        "type": "object",
                                        "properties": {
                                          "cursor": {
                                            "type": "string",
                                            "minLength": 1
                                          },
                                          "limit": {
                                            "type": "integer",
                                            "minimum": 1,
                                            "maximum": 100
                                          },
                                          "window": {
                                            "type": "object",
                                            "properties": {
                                              "since": {
                                                "type": "string",
                                                "format": "date-time",
                                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                              },
                                              "until": {
                                                "type": "string",
                                                "format": "date-time",
                                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                              }
                                            },
                                            "required": [
                                              "since",
                                              "until"
                                            ],
                                            "additionalProperties": false
                                          },
                                          "operation": {
                                            "type": "string",
                                            "const": "list"
                                          }
                                        },
                                        "required": [
                                          "cursor",
                                          "limit",
                                          "operation"
                                        ],
                                        "additionalProperties": false
                                      }
                                    },
                                    "required": [
                                      "tool",
                                      "arguments"
                                    ],
                                    "additionalProperties": false
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "items",
                              "next_cursor",
                              "continuation"
                            ],
                            "additionalProperties": false
                          },
                          "selection": {
                            "type": "string",
                            "enum": [
                              "since_boundary",
                              "recent_fallback",
                              "selected",
                              "history"
                            ]
                          },
                          "total": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "notes",
                          "selection",
                          "total"
                        ],
                        "additionalProperties": false
                      },
                      "last_completed_session": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              "vendor": {
                                "type": "string",
                                "enum": [
                                  "claude",
                                  "openai"
                                ],
                                "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                              },
                              "source_url": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "External conversation link used by Open the conversation. Not the app detail URL."
                              },
                              "type": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "enum": [
                                      "goal_setup",
                                      "check_in",
                                      "review",
                                      "open_coaching"
                                    ],
                                    "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "briefing_notes": {
                                "type": "string",
                                "description": "UI document: Briefing. Server-prepared coaching context."
                              },
                              "headline": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "One-line coaching-session summary used in session lists."
                              },
                              "summary_notes": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "UI document: Summary. Saved when the coaching session closes."
                              },
                              "started_at": {
                                "type": "string",
                                "format": "date-time",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                              },
                              "ended_at": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                              },
                              "url": {
                                "type": "string",
                                "format": "uri",
                                "description": "Internal app link to coaching session details; distinct from source_url."
                              },
                              "duration_minutes": {
                                "anyOf": [
                                  {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "actions_created": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              },
                              "actions_reviewed": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 9007199254740991
                              }
                            },
                            "required": [
                              "id",
                              "vendor",
                              "source_url",
                              "type",
                              "briefing_notes",
                              "headline",
                              "summary_notes",
                              "started_at",
                              "ended_at",
                              "url",
                              "duration_minutes",
                              "actions_created",
                              "actions_reviewed"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "selected": {
                        "type": "object",
                        "properties": {
                          "objective": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "cycle_id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "deadline_at": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "date",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "UI label: Deadline; null when no deadline has been set."
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "on_track",
                                      "off_track",
                                      "completed"
                                    ],
                                    "description": "Objective status: On track, Off track or Completed. Coaching judgment, independent of the derived Progress percentage."
                                  },
                                  "created_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  "short_code": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "url": {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  "progress_pct": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "UI label: Progress. Derived from measurable results, independently of Status."
                                  },
                                  "boundary_progress_pct": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "Historical progress at the resolved last-session boundary; not current Progress."
                                  },
                                  "movement_pp": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "cycle_id",
                                  "title",
                                  "description",
                                  "deadline_at",
                                  "status",
                                  "created_at",
                                  "short_code",
                                  "url",
                                  "progress_pct",
                                  "boundary_progress_pct",
                                  "movement_pp"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "result": {
                            "anyOf": [
                              {
                                "oneOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "metric_type": {
                                        "type": "string",
                                        "const": "number"
                                      },
                                      "start_value": {
                                        "type": "number"
                                      },
                                      "target_value": {
                                        "type": "number"
                                      },
                                      "unit": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ],
                                        "description": "UI label: Unit. Used by Number and Performance results."
                                      },
                                      "cadence": {
                                        "type": "null"
                                      },
                                      "per": {
                                        "type": "null"
                                      },
                                      "since": {
                                        "type": "null"
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "in_progress",
                                          "completed"
                                        ],
                                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                      },
                                      "created_at": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      "short_code": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "url": {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      "current_value": {
                                        "type": "number",
                                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                      },
                                      "boundary_value": {
                                        "type": "number"
                                      },
                                      "progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "boundary_progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement_pp": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "evidence_count": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "last_recorded_at": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_expected_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_logs_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "performance_share": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "objective_id",
                                      "title",
                                      "description",
                                      "metric_type",
                                      "start_value",
                                      "target_value",
                                      "unit",
                                      "cadence",
                                      "per",
                                      "since",
                                      "status",
                                      "created_at",
                                      "short_code",
                                      "url",
                                      "current_value",
                                      "boundary_value",
                                      "progress_pct",
                                      "boundary_progress_pct",
                                      "movement",
                                      "movement_pp",
                                      "evidence_count",
                                      "last_recorded_at",
                                      "habit_expected_since_boundary",
                                      "habit_logs_since_boundary",
                                      "performance_share"
                                    ],
                                    "additionalProperties": false
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "metric_type": {
                                        "type": "string",
                                        "const": "percentage"
                                      },
                                      "start_value": {
                                        "type": "number",
                                        "minimum": 0,
                                        "maximum": 100
                                      },
                                      "target_value": {
                                        "type": "number",
                                        "minimum": 0,
                                        "maximum": 100
                                      },
                                      "unit": {
                                        "type": "null"
                                      },
                                      "cadence": {
                                        "type": "null"
                                      },
                                      "per": {
                                        "type": "null"
                                      },
                                      "since": {
                                        "type": "null"
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "in_progress",
                                          "completed"
                                        ],
                                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                      },
                                      "created_at": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      "short_code": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "url": {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      "current_value": {
                                        "type": "number",
                                        "minimum": 0,
                                        "maximum": 100
                                      },
                                      "boundary_value": {
                                        "type": "number",
                                        "minimum": 0,
                                        "maximum": 100
                                      },
                                      "progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "boundary_progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement_pp": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "evidence_count": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "last_recorded_at": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_expected_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_logs_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "performance_share": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "objective_id",
                                      "title",
                                      "description",
                                      "metric_type",
                                      "start_value",
                                      "target_value",
                                      "unit",
                                      "cadence",
                                      "per",
                                      "since",
                                      "status",
                                      "created_at",
                                      "short_code",
                                      "url",
                                      "current_value",
                                      "boundary_value",
                                      "progress_pct",
                                      "boundary_progress_pct",
                                      "movement",
                                      "movement_pp",
                                      "evidence_count",
                                      "last_recorded_at",
                                      "habit_expected_since_boundary",
                                      "habit_logs_since_boundary",
                                      "performance_share"
                                    ],
                                    "additionalProperties": false
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "metric_type": {
                                        "type": "string",
                                        "const": "milestone"
                                      },
                                      "start_value": {
                                        "type": "number",
                                        "const": 0
                                      },
                                      "target_value": {
                                        "type": "number",
                                        "const": 1
                                      },
                                      "unit": {
                                        "type": "null"
                                      },
                                      "cadence": {
                                        "type": "null"
                                      },
                                      "per": {
                                        "type": "null"
                                      },
                                      "since": {
                                        "type": "null"
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "in_progress",
                                          "completed"
                                        ],
                                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                      },
                                      "created_at": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      "short_code": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "url": {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      "current_value": {
                                        "anyOf": [
                                          {
                                            "type": "number",
                                            "const": 0
                                          },
                                          {
                                            "type": "number",
                                            "const": 1
                                          }
                                        ]
                                      },
                                      "boundary_value": {
                                        "anyOf": [
                                          {
                                            "type": "number",
                                            "const": 0
                                          },
                                          {
                                            "type": "number",
                                            "const": 1
                                          }
                                        ]
                                      },
                                      "progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "boundary_progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement_pp": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "evidence_count": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "last_recorded_at": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_expected_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_logs_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "performance_share": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "objective_id",
                                      "title",
                                      "description",
                                      "metric_type",
                                      "start_value",
                                      "target_value",
                                      "unit",
                                      "cadence",
                                      "per",
                                      "since",
                                      "status",
                                      "created_at",
                                      "short_code",
                                      "url",
                                      "current_value",
                                      "boundary_value",
                                      "progress_pct",
                                      "boundary_progress_pct",
                                      "movement",
                                      "movement_pp",
                                      "evidence_count",
                                      "last_recorded_at",
                                      "habit_expected_since_boundary",
                                      "habit_logs_since_boundary",
                                      "performance_share"
                                    ],
                                    "additionalProperties": false
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "metric_type": {
                                        "type": "string",
                                        "const": "habit"
                                      },
                                      "start_value": {
                                        "type": "number",
                                        "const": 0
                                      },
                                      "target_value": {
                                        "type": "number",
                                        "const": 100
                                      },
                                      "unit": {
                                        "type": "null"
                                      },
                                      "cadence": {
                                        "type": "string",
                                        "enum": [
                                          "weekly",
                                          "monthly"
                                        ],
                                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                      },
                                      "per": {
                                        "type": "integer",
                                        "exclusiveMinimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "since": {
                                        "type": "string",
                                        "format": "date",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "in_progress",
                                          "completed"
                                        ],
                                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                      },
                                      "created_at": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      "short_code": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "url": {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      "current_value": {
                                        "type": "number",
                                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                      },
                                      "boundary_value": {
                                        "type": "number"
                                      },
                                      "progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "boundary_progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement_pp": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "evidence_count": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "last_recorded_at": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_expected_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_logs_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "performance_share": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "objective_id",
                                      "title",
                                      "description",
                                      "metric_type",
                                      "start_value",
                                      "target_value",
                                      "unit",
                                      "cadence",
                                      "per",
                                      "since",
                                      "status",
                                      "created_at",
                                      "short_code",
                                      "url",
                                      "current_value",
                                      "boundary_value",
                                      "progress_pct",
                                      "boundary_progress_pct",
                                      "movement",
                                      "movement_pp",
                                      "evidence_count",
                                      "last_recorded_at",
                                      "habit_expected_since_boundary",
                                      "habit_logs_since_boundary",
                                      "performance_share"
                                    ],
                                    "additionalProperties": false
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "metric_type": {
                                        "type": "string",
                                        "const": "performance"
                                      },
                                      "start_value": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ],
                                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                      },
                                      "target_value": {
                                        "type": "number"
                                      },
                                      "unit": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ],
                                        "description": "UI label: Unit. Used by Number and Performance results."
                                      },
                                      "cadence": {
                                        "type": "null"
                                      },
                                      "per": {
                                        "type": "null"
                                      },
                                      "since": {
                                        "type": "string",
                                        "format": "date",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "in_progress",
                                          "completed"
                                        ],
                                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                      },
                                      "created_at": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      "short_code": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "url": {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      "current_value": {
                                        "type": "number",
                                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                      },
                                      "boundary_value": {
                                        "type": "number"
                                      },
                                      "progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "boundary_progress_pct": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "movement_pp": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "evidence_count": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      "last_recorded_at": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_expected_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "habit_logs_since_boundary": {
                                        "anyOf": [
                                          {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 9007199254740991
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "performance_share": {
                                        "anyOf": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "objective_id",
                                      "title",
                                      "description",
                                      "metric_type",
                                      "start_value",
                                      "target_value",
                                      "unit",
                                      "cadence",
                                      "per",
                                      "since",
                                      "status",
                                      "created_at",
                                      "short_code",
                                      "url",
                                      "current_value",
                                      "boundary_value",
                                      "progress_pct",
                                      "boundary_progress_pct",
                                      "movement",
                                      "movement_pp",
                                      "evidence_count",
                                      "last_recorded_at",
                                      "habit_expected_since_boundary",
                                      "habit_logs_since_boundary",
                                      "performance_share"
                                    ],
                                    "additionalProperties": false
                                  }
                                ]
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "action": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "cycle_id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "objective_id": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "due_at": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "date",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "open",
                                      "in_progress",
                                      "done"
                                    ],
                                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                                  },
                                  "sort_order": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "Drag order within an action group; not a progress status."
                                  },
                                  "session_id": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "created_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  "url": {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  "overdue": {
                                    "type": "boolean"
                                  },
                                  "done_since_boundary": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "id",
                                  "cycle_id",
                                  "objective_id",
                                  "title",
                                  "description",
                                  "due_at",
                                  "status",
                                  "sort_order",
                                  "session_id",
                                  "created_at",
                                  "url",
                                  "overdue",
                                  "done_since_boundary"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "note": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "text": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "recorded_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  "url": {
                                    "type": "string",
                                    "format": "uri"
                                  },
                                  "since_boundary": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "id",
                                  "text",
                                  "recorded_at",
                                  "url",
                                  "since_boundary"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "session": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "format": "uuid",
                                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                  },
                                  "vendor": {
                                    "type": "string",
                                    "enum": [
                                      "claude",
                                      "openai"
                                    ],
                                    "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                                  },
                                  "source_url": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "uri"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "External conversation link used by Open the conversation. Not the app detail URL."
                                  },
                                  "type": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "enum": [
                                          "goal_setup",
                                          "check_in",
                                          "review",
                                          "open_coaching"
                                        ],
                                        "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "briefing_notes": {
                                    "type": "string",
                                    "description": "UI document: Briefing. Server-prepared coaching context."
                                  },
                                  "headline": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "One-line coaching-session summary used in session lists."
                                  },
                                  "summary_notes": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "UI document: Summary. Saved when the coaching session closes."
                                  },
                                  "started_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                  },
                                  "ended_at": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                                  },
                                  "url": {
                                    "type": "string",
                                    "format": "uri",
                                    "description": "Internal app link to coaching session details; distinct from source_url."
                                  },
                                  "duration_minutes": {
                                    "anyOf": [
                                      {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 9007199254740991
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "actions_created": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  },
                                  "actions_reviewed": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 9007199254740991
                                  }
                                },
                                "required": [
                                  "id",
                                  "vendor",
                                  "source_url",
                                  "type",
                                  "briefing_notes",
                                  "headline",
                                  "summary_notes",
                                  "started_at",
                                  "ended_at",
                                  "url",
                                  "duration_minutes",
                                  "actions_created",
                                  "actions_reviewed"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "objective",
                          "result",
                          "action",
                          "note",
                          "session"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "profile",
                      "boundary",
                      "cycle_line",
                      "cycles",
                      "cycle",
                      "objectives",
                      "results",
                      "actions",
                      "notes",
                      "last_completed_session",
                      "selected"
                    ],
                    "additionalProperties": false
                  },
                  "progress_by_type": {
                    "type": "object",
                    "properties": {
                      "objectives": {
                        "type": "object",
                        "properties": {
                          "on_track": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "off_track": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "completed": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "on_track",
                          "off_track",
                          "completed"
                        ],
                        "additionalProperties": false
                      },
                      "results": {
                        "type": "object",
                        "properties": {
                          "in_play": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "in_progress": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "completed": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "average_progress_pct": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "in_play",
                          "in_progress",
                          "completed",
                          "average_progress_pct"
                        ],
                        "additionalProperties": false
                      },
                      "actions": {
                        "type": "object",
                        "properties": {
                          "open": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "in_progress": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "done": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "overdue": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "open",
                          "in_progress",
                          "done",
                          "overdue"
                        ],
                        "additionalProperties": false
                      },
                      "notes": {
                        "type": "object",
                        "properties": {
                          "total": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          },
                          "since_boundary": {
                            "type": "integer",
                            "minimum": -9007199254740991,
                            "maximum": 9007199254740991
                          }
                        },
                        "required": [
                          "total",
                          "since_boundary"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "objectives",
                      "results",
                      "actions",
                      "notes"
                    ],
                    "additionalProperties": false
                  },
                  "session_history": {
                    "type": "object",
                    "properties": {
                      "items": {
                        "maxItems": 6,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid",
                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                              "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                            },
                            "vendor": {
                              "type": "string",
                              "enum": [
                                "claude",
                                "openai"
                              ],
                              "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
                            },
                            "source_url": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "uri"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "External conversation link used by Open the conversation. Not the app detail URL."
                            },
                            "type": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "enum": [
                                    "goal_setup",
                                    "check_in",
                                    "review",
                                    "open_coaching"
                                  ],
                                  "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "headline": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "One-line coaching-session summary used in session lists."
                            },
                            "started_at": {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                            },
                            "ended_at": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
                            },
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "Internal app link to coaching session details; distinct from source_url."
                            },
                            "duration_minutes": {
                              "anyOf": [
                                {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 9007199254740991
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "actions_created": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "actions_reviewed": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            }
                          },
                          "required": [
                            "id",
                            "vendor",
                            "source_url",
                            "type",
                            "headline",
                            "started_at",
                            "ended_at",
                            "url",
                            "duration_minutes",
                            "actions_created",
                            "actions_reviewed"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "next_cursor": {
                        "anyOf": [
                          {
                            "type": "string",
                            "minLength": 1
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "continuation": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "tool": {
                                "type": "string",
                                "const": "session_read"
                              },
                              "arguments": {
                                "type": "object",
                                "properties": {
                                  "cursor": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "limit": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 100
                                  },
                                  "window": {
                                    "type": "object",
                                    "properties": {
                                      "since": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      },
                                      "until": {
                                        "type": "string",
                                        "format": "date-time",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                      }
                                    },
                                    "required": [
                                      "since",
                                      "until"
                                    ],
                                    "additionalProperties": false
                                  },
                                  "operation": {
                                    "type": "string",
                                    "const": "list"
                                  }
                                },
                                "required": [
                                  "cursor",
                                  "limit",
                                  "operation"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "required": [
                              "tool",
                              "arguments"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "items",
                      "next_cursor",
                      "continuation"
                    ],
                    "additionalProperties": false
                  },
                  "attention": {
                    "type": "object",
                    "properties": {
                      "overdue_actions": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "cycle_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                  "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                },
                                "objective_id": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "title": {
                                  "type": "string"
                                },
                                "description": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "due_at": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "open",
                                    "in_progress",
                                    "done"
                                  ],
                                  "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                                },
                                "sort_order": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ],
                                  "description": "Drag order within an action group; not a progress status."
                                },
                                "session_id": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                },
                                "created_at": {
                                  "type": "string",
                                  "format": "date-time",
                                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                },
                                "url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "overdue": {
                                  "type": "boolean"
                                },
                                "done_since_boundary": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "id",
                                "cycle_id",
                                "objective_id",
                                "title",
                                "description",
                                "due_at",
                                "status",
                                "sort_order",
                                "session_id",
                                "created_at",
                                "url",
                                "overdue",
                                "done_since_boundary"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "continuation": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "tool": {
                                    "type": "string",
                                    "const": "action_read"
                                  },
                                  "arguments": {
                                    "type": "object",
                                    "properties": {
                                      "cursor": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "limit": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 100
                                      },
                                      "cycle_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "objective_id": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "format": "uuid",
                                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "open",
                                          "in_progress",
                                          "done"
                                        ],
                                        "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                                      },
                                      "due_before": {
                                        "type": "string",
                                        "format": "date",
                                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                      },
                                      "outstanding": {
                                        "description": "Only open or in_progress actions; exclude done across every page.",
                                        "type": "boolean",
                                        "const": true
                                      },
                                      "session_id": {
                                        "description": "Filter actions created in this owned session; combine with cycle_id to select its cycle explicitly.",
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                                      },
                                      "overdue": {
                                        "type": "boolean",
                                        "const": true
                                      },
                                      "operation": {
                                        "type": "string",
                                        "const": "list"
                                      }
                                    },
                                    "required": [
                                      "cursor",
                                      "limit",
                                      "cycle_id",
                                      "due_before",
                                      "overdue",
                                      "operation"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "tool",
                                  "arguments"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor",
                          "continuation"
                        ],
                        "additionalProperties": false
                      },
                      "never_updated_results": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "number"
                                    },
                                    "start_value": {
                                      "type": "number"
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "percentage"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "boundary_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "milestone"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 1
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "boundary_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "habit"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "string",
                                      "enum": [
                                        "weekly",
                                        "monthly"
                                      ],
                                      "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                    },
                                    "per": {
                                      "type": "integer",
                                      "exclusiveMinimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "performance"
                                    },
                                    "start_value": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                }
                              ]
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "continuation": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "tool": {
                                    "type": "string",
                                    "const": "result_read"
                                  },
                                  "arguments": {
                                    "type": "object",
                                    "properties": {
                                      "cursor": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "limit": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 100
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "cycle_id": {
                                        "description": "List results across one cycle instead of a single objective. Supply exactly one parent selector.",
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                                      },
                                      "attention": {
                                        "type": "string",
                                        "const": "never_updated"
                                      },
                                      "window": {
                                        "description": "Required for silent/unmarked attention. Use exact server-resolved briefing bounds; current result figures remain current.",
                                        "type": "object",
                                        "properties": {
                                          "since": {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          "until": {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          }
                                        },
                                        "required": [
                                          "since",
                                          "until"
                                        ],
                                        "additionalProperties": false
                                      },
                                      "operation": {
                                        "type": "string",
                                        "const": "list"
                                      }
                                    },
                                    "required": [
                                      "cursor",
                                      "limit",
                                      "attention",
                                      "operation"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "tool",
                                  "arguments"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor",
                          "continuation"
                        ],
                        "additionalProperties": false
                      },
                      "silent_results": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "number"
                                    },
                                    "start_value": {
                                      "type": "number"
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "percentage"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "boundary_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "milestone"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 1
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "boundary_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "habit"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "string",
                                      "enum": [
                                        "weekly",
                                        "monthly"
                                      ],
                                      "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                    },
                                    "per": {
                                      "type": "integer",
                                      "exclusiveMinimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "performance"
                                    },
                                    "start_value": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                }
                              ]
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "continuation": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "tool": {
                                    "type": "string",
                                    "const": "result_read"
                                  },
                                  "arguments": {
                                    "type": "object",
                                    "properties": {
                                      "cursor": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "limit": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 100
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "cycle_id": {
                                        "description": "List results across one cycle instead of a single objective. Supply exactly one parent selector.",
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                                      },
                                      "attention": {
                                        "type": "string",
                                        "const": "silent"
                                      },
                                      "window": {
                                        "type": "object",
                                        "properties": {
                                          "since": {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          "until": {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          }
                                        },
                                        "required": [
                                          "since",
                                          "until"
                                        ],
                                        "additionalProperties": false
                                      },
                                      "operation": {
                                        "type": "string",
                                        "const": "list"
                                      }
                                    },
                                    "required": [
                                      "cursor",
                                      "limit",
                                      "attention",
                                      "window",
                                      "operation"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "tool",
                                  "arguments"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor",
                          "continuation"
                        ],
                        "additionalProperties": false
                      },
                      "unmarked_habits": {
                        "type": "object",
                        "properties": {
                          "items": {
                            "maxItems": 50,
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "number"
                                    },
                                    "start_value": {
                                      "type": "number"
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "percentage"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "boundary_value": {
                                      "type": "number",
                                      "minimum": 0,
                                      "maximum": 100
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "milestone"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 1
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "null"
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "boundary_value": {
                                      "anyOf": [
                                        {
                                          "type": "number",
                                          "const": 0
                                        },
                                        {
                                          "type": "number",
                                          "const": 1
                                        }
                                      ]
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "habit"
                                    },
                                    "start_value": {
                                      "type": "number",
                                      "const": 0
                                    },
                                    "target_value": {
                                      "type": "number",
                                      "const": 100
                                    },
                                    "unit": {
                                      "type": "null"
                                    },
                                    "cadence": {
                                      "type": "string",
                                      "enum": [
                                        "weekly",
                                        "monthly"
                                      ],
                                      "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                                    },
                                    "per": {
                                      "type": "integer",
                                      "exclusiveMinimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "objective_id": {
                                      "type": "string",
                                      "format": "uuid",
                                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "metric_type": {
                                      "type": "string",
                                      "const": "performance"
                                    },
                                    "start_value": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                                    },
                                    "target_value": {
                                      "type": "number"
                                    },
                                    "unit": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ],
                                      "description": "UI label: Unit. Used by Number and Performance results."
                                    },
                                    "cadence": {
                                      "type": "null"
                                    },
                                    "per": {
                                      "type": "null"
                                    },
                                    "since": {
                                      "type": "string",
                                      "format": "date",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                      "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                                    },
                                    "status": {
                                      "type": "string",
                                      "enum": [
                                        "in_progress",
                                        "completed"
                                      ],
                                      "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                                    },
                                    "created_at": {
                                      "type": "string",
                                      "format": "date-time",
                                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                    },
                                    "short_code": {
                                      "type": "string",
                                      "minLength": 1
                                    },
                                    "url": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "current_value": {
                                      "type": "number",
                                      "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                                    },
                                    "boundary_value": {
                                      "type": "number"
                                    },
                                    "progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "boundary_progress_pct": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "movement_pp": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "evidence_count": {
                                      "type": "integer",
                                      "minimum": 0,
                                      "maximum": 9007199254740991
                                    },
                                    "last_recorded_at": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "format": "date-time",
                                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_expected_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "habit_logs_since_boundary": {
                                      "anyOf": [
                                        {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 9007199254740991
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    },
                                    "performance_share": {
                                      "anyOf": [
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "null"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "objective_id",
                                    "title",
                                    "description",
                                    "metric_type",
                                    "start_value",
                                    "target_value",
                                    "unit",
                                    "cadence",
                                    "per",
                                    "since",
                                    "status",
                                    "created_at",
                                    "short_code",
                                    "url",
                                    "current_value",
                                    "boundary_value",
                                    "progress_pct",
                                    "boundary_progress_pct",
                                    "movement",
                                    "movement_pp",
                                    "evidence_count",
                                    "last_recorded_at",
                                    "habit_expected_since_boundary",
                                    "habit_logs_since_boundary",
                                    "performance_share"
                                  ],
                                  "additionalProperties": false
                                }
                              ]
                            }
                          },
                          "next_cursor": {
                            "anyOf": [
                              {
                                "type": "string",
                                "minLength": 1
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "continuation": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "tool": {
                                    "type": "string",
                                    "const": "result_read"
                                  },
                                  "arguments": {
                                    "type": "object",
                                    "properties": {
                                      "cursor": {
                                        "type": "string",
                                        "minLength": 1
                                      },
                                      "limit": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 100
                                      },
                                      "objective_id": {
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                                      },
                                      "cycle_id": {
                                        "description": "List results across one cycle instead of a single objective. Supply exactly one parent selector.",
                                        "type": "string",
                                        "format": "uuid",
                                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                                      },
                                      "attention": {
                                        "type": "string",
                                        "const": "unmarked"
                                      },
                                      "window": {
                                        "type": "object",
                                        "properties": {
                                          "since": {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          },
                                          "until": {
                                            "type": "string",
                                            "format": "date-time",
                                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                                          }
                                        },
                                        "required": [
                                          "since",
                                          "until"
                                        ],
                                        "additionalProperties": false
                                      },
                                      "operation": {
                                        "type": "string",
                                        "const": "list"
                                      }
                                    },
                                    "required": [
                                      "cursor",
                                      "limit",
                                      "attention",
                                      "window",
                                      "operation"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "required": [
                                  "tool",
                                  "arguments"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "items",
                          "next_cursor",
                          "continuation"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "required": [
                      "overdue_actions",
                      "never_updated_results",
                      "silent_results",
                      "unmarked_habits"
                    ],
                    "additionalProperties": false
                  },
                  "pace": {
                    "type": "string",
                    "enum": [
                      "ahead",
                      "behind",
                      "level",
                      "nothing_measurable"
                    ]
                  },
                  "next_due_action": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "cycle_id": {
                            "type": "string",
                            "format": "uuid",
                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                          },
                          "objective_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "due_at": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "date",
                                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                                "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "open",
                              "in_progress",
                              "done"
                            ],
                            "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                          },
                          "sort_order": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Drag order within an action group; not a progress status."
                          },
                          "session_id": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uuid",
                                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "overdue": {
                            "type": "boolean"
                          },
                          "done_since_boundary": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "id",
                          "cycle_id",
                          "objective_id",
                          "title",
                          "description",
                          "due_at",
                          "status",
                          "sort_order",
                          "session_id",
                          "created_at",
                          "url",
                          "overdue",
                          "done_since_boundary"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "as_of",
                  "current",
                  "progress_by_type",
                  "session_history",
                  "attention",
                  "pace",
                  "next_due_action"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "access_state",
              "session",
              "briefing_notes",
              "briefing"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "access_state": {
                "type": "string",
                "const": "unpaid"
              },
              "enablement": {
                "type": "object",
                "properties": {
                  "instruction": {
                    "type": "string"
                  },
                  "signup_url": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "instruction",
                  "signup_url"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "access_state",
              "enablement"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "session_close",
      "collection": "sessions",
      "specification": "docs/feature-specs/F7-sessions.md#mcp-source-mapping--selected-target",
      "operation": "call",
      "binding": "planned",
      "mode": "direct",
      "readiness": "contract-only",
      "services": [
        "sessions.close"
      ],
      "gap": null,
      "projection": "List omits documents and preserves resolved window/boundary; stored get preserves nullable session; start explicitly constructs the compact MCP briefing and supported-reader continuations; close preserves saved outcome.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
            "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
          },
          "type": {
            "type": "string",
            "enum": [
              "goal_setup",
              "check_in",
              "review",
              "open_coaching"
            ],
            "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
          },
          "headline": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "summary_notes": {
            "type": "string",
            "minLength": 1,
            "description": "UI document: Summary. Saved when closing the coaching session."
          }
        },
        "required": [
          "session_id",
          "type",
          "headline",
          "summary_notes"
        ],
        "additionalProperties": false
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "session": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "vendor": {
                "type": "string",
                "enum": [
                  "claude",
                  "openai"
                ],
                "description": "Conversation host: claude is shown as Claude; openai is shown as ChatGPT."
              },
              "source_url": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uri"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "External conversation link used by Open the conversation. Not the app detail URL."
              },
              "type": {
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "goal_setup",
                      "check_in",
                      "review",
                      "open_coaching"
                    ],
                    "description": "Coaching session type: Goal setup, Check-in, Review or Open coaching. Separate from whether the session is still open."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "briefing_notes": {
                "type": "string",
                "description": "UI document: Briefing. Server-prepared coaching context."
              },
              "headline": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "One-line coaching-session summary used in session lists."
              },
              "summary_notes": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "UI document: Summary. Saved when the coaching session closes."
              },
              "started_at": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "ended_at": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Closed when set; In progress when null. This is derived session state, not a stored status enum."
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Internal app link to coaching session details; distinct from source_url."
              },
              "duration_minutes": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "actions_created": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              "actions_reviewed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "id",
              "vendor",
              "source_url",
              "type",
              "briefing_notes",
              "headline",
              "summary_notes",
              "started_at",
              "ended_at",
              "url",
              "duration_minutes",
              "actions_created",
              "actions_reviewed"
            ],
            "additionalProperties": false
          },
          "boundary_moved_to": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
          }
        },
        "required": [
          "session",
          "boundary_moved_to"
        ],
        "additionalProperties": false
      }
    },
    {
      "tool": "progress_record",
      "collection": "progress",
      "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
      "operation": "result",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "result_logs.create"
      ],
      "gap": null,
      "projection": "Dispatch result evidence, habit day/comment and action outcome to their existing shared operations; project the affected record and changed IDs.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "result_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "value": {
                    "type": "number"
                  },
                  "comment": {
                    "type": "string",
                    "minLength": 1
                  },
                  "target": {
                    "type": "string",
                    "const": "result"
                  }
                },
                "required": [
                  "result_id",
                  "target"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "comment": {
                    "type": "string",
                    "minLength": 1
                  },
                  "result_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "day": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "marked": {
                    "type": "boolean",
                    "description": "Desired calendar state: true marks the day; false unmarks it. Not an append-only history event."
                  },
                  "target": {
                    "type": "string",
                    "const": "result"
                  }
                },
                "required": [
                  "result_id",
                  "day",
                  "marked",
                  "target"
                ],
                "additionalProperties": false
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "in_progress",
                  "done"
                ],
                "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
              },
              "comment": {
                "type": "string",
                "minLength": 1
              },
              "target": {
                "type": "string",
                "const": "action"
              }
            },
            "required": [
              "action_id",
              "status",
              "target"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "changed": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "entity": {
                      "type": "string",
                      "enum": [
                        "user",
                        "cycle",
                        "objective",
                        "result",
                        "result_log",
                        "action",
                        "action_log",
                        "session",
                        "note",
                        "habit_log"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    }
                  },
                  "required": [
                    "entity",
                    "id"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "result",
              "changed"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "action": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "done"
                    ],
                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                  },
                  "sort_order": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Drag order within an action group; not a progress status."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "overdue": {
                    "type": "boolean"
                  },
                  "done_since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "objective_id",
                  "title",
                  "description",
                  "due_at",
                  "status",
                  "sort_order",
                  "session_id",
                  "created_at",
                  "url",
                  "overdue",
                  "done_since_boundary"
                ],
                "additionalProperties": false
              },
              "changed": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "entity": {
                      "type": "string",
                      "enum": [
                        "user",
                        "cycle",
                        "objective",
                        "result",
                        "result_log",
                        "action",
                        "action_log",
                        "session",
                        "note",
                        "habit_log"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    }
                  },
                  "required": [
                    "entity",
                    "id"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "action",
              "changed"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "progress_record",
      "collection": "progress",
      "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
      "operation": "habit",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "habit_logs.set"
      ],
      "gap": null,
      "projection": "Dispatch result evidence, habit day/comment and action outcome to their existing shared operations; project the affected record and changed IDs.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "result_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "value": {
                    "type": "number"
                  },
                  "comment": {
                    "type": "string",
                    "minLength": 1
                  },
                  "target": {
                    "type": "string",
                    "const": "result"
                  }
                },
                "required": [
                  "result_id",
                  "target"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "comment": {
                    "type": "string",
                    "minLength": 1
                  },
                  "result_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "day": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "marked": {
                    "type": "boolean",
                    "description": "Desired calendar state: true marks the day; false unmarks it. Not an append-only history event."
                  },
                  "target": {
                    "type": "string",
                    "const": "result"
                  }
                },
                "required": [
                  "result_id",
                  "day",
                  "marked",
                  "target"
                ],
                "additionalProperties": false
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "in_progress",
                  "done"
                ],
                "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
              },
              "comment": {
                "type": "string",
                "minLength": 1
              },
              "target": {
                "type": "string",
                "const": "action"
              }
            },
            "required": [
              "action_id",
              "status",
              "target"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "changed": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "entity": {
                      "type": "string",
                      "enum": [
                        "user",
                        "cycle",
                        "objective",
                        "result",
                        "result_log",
                        "action",
                        "action_log",
                        "session",
                        "note",
                        "habit_log"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    }
                  },
                  "required": [
                    "entity",
                    "id"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "result",
              "changed"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "action": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "done"
                    ],
                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                  },
                  "sort_order": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Drag order within an action group; not a progress status."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "overdue": {
                    "type": "boolean"
                  },
                  "done_since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "objective_id",
                  "title",
                  "description",
                  "due_at",
                  "status",
                  "sort_order",
                  "session_id",
                  "created_at",
                  "url",
                  "overdue",
                  "done_since_boundary"
                ],
                "additionalProperties": false
              },
              "changed": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "entity": {
                      "type": "string",
                      "enum": [
                        "user",
                        "cycle",
                        "objective",
                        "result",
                        "result_log",
                        "action",
                        "action_log",
                        "session",
                        "note",
                        "habit_log"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    }
                  },
                  "required": [
                    "entity",
                    "id"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "action",
              "changed"
            ],
            "additionalProperties": false
          }
        ]
      }
    },
    {
      "tool": "progress_record",
      "collection": "progress",
      "specification": "docs/feature-specs/F4-results.md#mcp-source-mapping--selected-target",
      "operation": "action",
      "binding": "planned",
      "mode": "adapted",
      "readiness": "contract-only",
      "services": [
        "action_logs.create"
      ],
      "gap": null,
      "projection": "Dispatch result evidence, habit day/comment and action outcome to their existing shared operations; project the affected record and changed IDs.",
      "input": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "result_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "value": {
                    "type": "number"
                  },
                  "comment": {
                    "type": "string",
                    "minLength": 1
                  },
                  "target": {
                    "type": "string",
                    "const": "result"
                  }
                },
                "required": [
                  "result_id",
                  "target"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "comment": {
                    "type": "string",
                    "minLength": 1
                  },
                  "result_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "day": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                    "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                  },
                  "marked": {
                    "type": "boolean",
                    "description": "Desired calendar state: true marks the day; false unmarks it. Not an append-only history event."
                  },
                  "target": {
                    "type": "string",
                    "const": "result"
                  }
                },
                "required": [
                  "result_id",
                  "day",
                  "marked",
                  "target"
                ],
                "additionalProperties": false
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "action_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "in_progress",
                  "done"
                ],
                "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
              },
              "comment": {
                "type": "string",
                "minLength": 1
              },
              "target": {
                "type": "string",
                "const": "action"
              }
            },
            "required": [
              "action_id",
              "status",
              "target"
            ],
            "additionalProperties": false
          }
        ]
      },
      "output": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "result": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "number"
                      },
                      "start_value": {
                        "type": "number"
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "percentage"
                      },
                      "start_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "target_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "boundary_value": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "milestone"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 1
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "null"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "boundary_value": {
                        "anyOf": [
                          {
                            "type": "number",
                            "const": 0
                          },
                          {
                            "type": "number",
                            "const": 1
                          }
                        ]
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "habit"
                      },
                      "start_value": {
                        "type": "number",
                        "const": 0
                      },
                      "target_value": {
                        "type": "number",
                        "const": 100
                      },
                      "unit": {
                        "type": "null"
                      },
                      "cadence": {
                        "type": "string",
                        "enum": [
                          "weekly",
                          "monthly"
                        ],
                        "description": "UI label: Cadence. Weekly or Monthly; per supplies the Times value."
                      },
                      "per": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "objective_id": {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      "title": {
                        "type": "string"
                      },
                      "description": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "metric_type": {
                        "type": "string",
                        "const": "performance"
                      },
                      "start_value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Start. Metric baseline; habit baselines are derived rather than stored."
                      },
                      "target_value": {
                        "type": "number"
                      },
                      "unit": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "UI label: Unit. Used by Number and Performance results."
                      },
                      "cadence": {
                        "type": "null"
                      },
                      "per": {
                        "type": "null"
                      },
                      "since": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "in_progress",
                          "completed"
                        ],
                        "description": "Result status: In progress or Completed. Reaching the target does not automatically mark the result completed."
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                      },
                      "short_code": {
                        "type": "string",
                        "minLength": 1
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "current_value": {
                        "type": "number",
                        "description": "Current value displayed in the result headline; derived according to metric type from its baseline and retained evidence."
                      },
                      "boundary_value": {
                        "type": "number"
                      },
                      "progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "boundary_progress_pct": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "movement_pp": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "evidence_count": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "last_recorded_at": {
                        "anyOf": [
                          {
                            "type": "string",
                            "format": "date-time",
                            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_expected_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "habit_logs_since_boundary": {
                        "anyOf": [
                          {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "performance_share": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "id",
                      "objective_id",
                      "title",
                      "description",
                      "metric_type",
                      "start_value",
                      "target_value",
                      "unit",
                      "cadence",
                      "per",
                      "since",
                      "status",
                      "created_at",
                      "short_code",
                      "url",
                      "current_value",
                      "boundary_value",
                      "progress_pct",
                      "boundary_progress_pct",
                      "movement",
                      "movement_pp",
                      "evidence_count",
                      "last_recorded_at",
                      "habit_expected_since_boundary",
                      "habit_logs_since_boundary",
                      "performance_share"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "changed": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "entity": {
                      "type": "string",
                      "enum": [
                        "user",
                        "cycle",
                        "objective",
                        "result",
                        "result_log",
                        "action",
                        "action_log",
                        "session",
                        "note",
                        "habit_log"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    }
                  },
                  "required": [
                    "entity",
                    "id"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "result",
              "changed"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "action": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "cycle_id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                    "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                  },
                  "objective_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "title": {
                    "type": "string"
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "due_at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "Calendar date as YYYY-MM-DD in the profile timezone."
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "UI label: Due. May be unset on a web draft; a set date cannot be cleared."
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "done"
                    ],
                    "description": "Action status: Open, In progress or Done. The To do UI group includes Open and In progress; Overdue is derived, not a status."
                  },
                  "sort_order": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Drag order within an action group; not a progress status."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                        "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "created_at": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "overdue": {
                    "type": "boolean"
                  },
                  "done_since_boundary": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "id",
                  "cycle_id",
                  "objective_id",
                  "title",
                  "description",
                  "due_at",
                  "status",
                  "sort_order",
                  "session_id",
                  "created_at",
                  "url",
                  "overdue",
                  "done_since_boundary"
                ],
                "additionalProperties": false
              },
              "changed": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "entity": {
                      "type": "string",
                      "enum": [
                        "user",
                        "cycle",
                        "objective",
                        "result",
                        "result_log",
                        "action",
                        "action_log",
                        "session",
                        "note",
                        "habit_log"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                      "description": "Owned record UUID from fresh tool results or user-selected context. Never invent an ID; clarify ambiguous targets."
                    }
                  },
                  "required": [
                    "entity",
                    "id"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "action",
              "changed"
            ],
            "additionalProperties": false
          }
        ]
      }
    }
  ],
  "gaps": [],
  "flows": [
    {
      "entry": {
        "kind": "page",
        "name": "/terms",
        "title": "Terms",
        "owner": "Scaffold legal-route continuity",
        "state": "scaffold"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "Scaffold legal-route continuity"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "No API dependencies declared; local/framework behavior is outside this service map.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/privacy",
        "title": "Privacy",
        "owner": "Scaffold legal-route continuity",
        "state": "scaffold"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "Scaffold legal-route continuity"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "No API dependencies declared; local/framework behavior is outside this service map.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/cookies",
        "title": "Cookies",
        "owner": "Scaffold legal-route continuity",
        "state": "scaffold"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "Scaffold legal-route continuity"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "No API dependencies declared; local/framework behavior is outside this service map.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/example",
        "title": "Example",
        "owner": "Temporary scaffold reference",
        "state": "scaffold"
      },
      "transport": "API",
      "operation": "example.list",
      "services": [],
      "features": [
        "Temporary scaffold reference"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "Retained scaffold API has no product service descriptor.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/example",
        "title": "Example",
        "owner": "Temporary scaffold reference",
        "state": "scaffold"
      },
      "transport": "API",
      "operation": "example.create",
      "services": [],
      "features": [
        "Temporary scaffold reference"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "Retained scaffold API has no product service descriptor.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/example",
        "title": "Example",
        "owner": "Temporary scaffold reference",
        "state": "scaffold"
      },
      "transport": "API",
      "operation": "example.delete",
      "services": [],
      "features": [
        "Temporary scaffold reference"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "Retained scaffold API has no product service descriptor.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/",
        "title": "Objectives",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "record.query",
      "services": [
        {
          "path": "record.query",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives",
        "F7 Sessions"
      ],
      "cross_feature": true,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/",
        "title": "Objectives",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "objectives.create",
      "services": [
        {
          "path": "objectives.create",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": [
            {
              "name": "objective_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/",
        "title": "Objectives",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "results.get",
      "services": [
        {
          "path": "results.get",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives",
        "F4 Results"
      ],
      "cross_feature": true,
      "via": "result-update-dial",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/",
        "title": "Objectives",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "result_logs.create",
      "services": [
        {
          "path": "result_logs.create",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When numeric/performance evidence or a milestone flip is saved; not comment-only rows.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives",
        "F4 Results"
      ],
      "cross_feature": true,
      "via": "result-update-dial",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/",
        "title": "Objectives",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "habit_logs.set",
      "services": [
        {
          "path": "habit_logs.set",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When a habit mark/unmark changes recorded progress; not comment-only changes or replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives",
        "F4 Results"
      ],
      "cross_feature": true,
      "via": "result-update-dial",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/",
        "title": "Objectives",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.get",
      "services": [
        {
          "path": "notes.get",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives",
        "F6 Notes"
      ],
      "cross_feature": true,
      "via": "note-editor",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/",
        "title": "Objectives",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.create",
      "services": [
        {
          "path": "notes.create",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": [
            {
              "name": "note_created",
              "when": "After durable creation; not autosave updates or receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives",
        "F6 Notes"
      ],
      "cross_feature": true,
      "via": "note-editor",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/",
        "title": "Objectives",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.update",
      "services": [
        {
          "path": "notes.update",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives",
        "F6 Notes"
      ],
      "cross_feature": true,
      "via": "note-editor",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/",
        "title": "Objectives",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.delete",
      "services": [
        {
          "path": "notes.delete",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives",
        "F6 Notes"
      ],
      "cross_feature": true,
      "via": "note-editor",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/objectives/:id",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "objectives.get",
      "services": [
        {
          "path": "objectives.get",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/objectives/:id",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "objectives.create",
      "services": [
        {
          "path": "objectives.create",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": [
            {
              "name": "objective_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/objectives/:id",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "objectives.update",
      "services": [
        {
          "path": "objectives.update",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/objectives/:id",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "objectives.delete",
      "services": [
        {
          "path": "objectives.delete",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/objectives/:id",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "results.create",
      "services": [
        {
          "path": "results.create",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives",
        "F4 Results"
      ],
      "cross_feature": true,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/objectives/:id",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "actions.create",
      "services": [
        {
          "path": "actions.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives",
        "F5 Actions"
      ],
      "cross_feature": true,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/objectives/:id",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "action_logs.create",
      "services": [
        {
          "path": "action_logs.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_status_changed",
              "when": "For each persisted log, including repeat status with comment; not receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives",
        "F5 Actions"
      ],
      "cross_feature": true,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/objectives/:id",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "results.get",
      "services": [
        {
          "path": "results.get",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives",
        "F4 Results"
      ],
      "cross_feature": true,
      "via": "result-update-dial",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/objectives/:id",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "result_logs.create",
      "services": [
        {
          "path": "result_logs.create",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When numeric/performance evidence or a milestone flip is saved; not comment-only rows.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives",
        "F4 Results"
      ],
      "cross_feature": true,
      "via": "result-update-dial",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/objectives/:id",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "pending"
      },
      "transport": "API",
      "operation": "habit_logs.set",
      "services": [
        {
          "path": "habit_logs.set",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When a habit mark/unmark changes recorded progress; not comment-only changes or replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives",
        "F4 Results"
      ],
      "cross_feature": true,
      "via": "result-update-dial",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "results.get",
      "services": [
        {
          "path": "results.get",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "result_logs.list",
      "services": [
        {
          "path": "result_logs.list",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "habit_logs.list",
      "services": [
        {
          "path": "habit_logs.list",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "results.create",
      "services": [
        {
          "path": "results.create",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "results.update",
      "services": [
        {
          "path": "results.update",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "results.delete",
      "services": [
        {
          "path": "results.delete",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "result_logs.create",
      "services": [
        {
          "path": "result_logs.create",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When numeric/performance evidence or a milestone flip is saved; not comment-only rows.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "result_logs.clear_comment",
      "services": [
        {
          "path": "result_logs.clear_comment",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "result_logs.delete",
      "services": [
        {
          "path": "result_logs.delete",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "habit_logs.set",
      "services": [
        {
          "path": "habit_logs.set",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When a habit mark/unmark changes recorded progress; not comment-only changes or replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "results.get",
      "services": [
        {
          "path": "results.get",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result-update-dial",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "result_logs.create",
      "services": [
        {
          "path": "result_logs.create",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When numeric/performance evidence or a milestone flip is saved; not comment-only rows.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result-update-dial",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/results/:id",
        "title": "Result",
        "owner": "F4 Results",
        "state": "pending"
      },
      "transport": "API",
      "operation": "habit_logs.set",
      "services": [
        {
          "path": "habit_logs.set",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When a habit mark/unmark changes recorded progress; not comment-only changes or replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result-update-dial",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/actions",
        "title": "Actions",
        "owner": "F5 Actions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "actions.list",
      "services": [
        {
          "path": "actions.list",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/actions",
        "title": "Actions",
        "owner": "F5 Actions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "actions.create",
      "services": [
        {
          "path": "actions.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/actions",
        "title": "Actions",
        "owner": "F5 Actions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "actions.reorder",
      "services": [
        {
          "path": "actions.reorder",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/actions",
        "title": "Actions",
        "owner": "F5 Actions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "action_logs.create",
      "services": [
        {
          "path": "action_logs.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_status_changed",
              "when": "For each persisted log, including repeat status with comment; not receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/actions/:id",
        "title": "Action",
        "owner": "F5 Actions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "actions.get",
      "services": [
        {
          "path": "actions.get",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/actions/:id",
        "title": "Action",
        "owner": "F5 Actions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "action_logs.list",
      "services": [
        {
          "path": "action_logs.list",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/actions/:id",
        "title": "Action",
        "owner": "F5 Actions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "actions.create",
      "services": [
        {
          "path": "actions.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/actions/:id",
        "title": "Action",
        "owner": "F5 Actions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "actions.update",
      "services": [
        {
          "path": "actions.update",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/actions/:id",
        "title": "Action",
        "owner": "F5 Actions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "actions.delete",
      "services": [
        {
          "path": "actions.delete",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/actions/:id",
        "title": "Action",
        "owner": "F5 Actions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "action_logs.create",
      "services": [
        {
          "path": "action_logs.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_status_changed",
              "when": "For each persisted log, including repeat status with comment; not receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/actions/:id",
        "title": "Action",
        "owner": "F5 Actions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "action_logs.clear_comment",
      "services": [
        {
          "path": "action_logs.clear_comment",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/notes",
        "title": "Notes",
        "owner": "F6 Notes",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.list",
      "services": [
        {
          "path": "notes.list",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/notes",
        "title": "Notes",
        "owner": "F6 Notes",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.delete",
      "services": [
        {
          "path": "notes.delete",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/notes",
        "title": "Notes",
        "owner": "F6 Notes",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.get",
      "services": [
        {
          "path": "notes.get",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note-editor",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/notes",
        "title": "Notes",
        "owner": "F6 Notes",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.create",
      "services": [
        {
          "path": "notes.create",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": [
            {
              "name": "note_created",
              "when": "After durable creation; not autosave updates or receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note-editor",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/notes",
        "title": "Notes",
        "owner": "F6 Notes",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.update",
      "services": [
        {
          "path": "notes.update",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note-editor",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/notes",
        "title": "Notes",
        "owner": "F6 Notes",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.delete",
      "services": [
        {
          "path": "notes.delete",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note-editor",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/notes/:id",
        "title": "Note",
        "owner": "F6 Notes",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.get",
      "services": [
        {
          "path": "notes.get",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/notes/:id",
        "title": "Note",
        "owner": "F6 Notes",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.update",
      "services": [
        {
          "path": "notes.update",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/notes/:id",
        "title": "Note",
        "owner": "F6 Notes",
        "state": "pending"
      },
      "transport": "API",
      "operation": "notes.delete",
      "services": [
        {
          "path": "notes.delete",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/sessions",
        "title": "Sessions",
        "owner": "F7 Sessions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "sessions.list",
      "services": [
        {
          "path": "sessions.list",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/sessions/:id",
        "title": "Session",
        "owner": "F7 Sessions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "sessions.get",
      "services": [
        {
          "path": "sessions.get",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/sessions/:id",
        "title": "Session",
        "owner": "F7 Sessions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "action_logs.create",
      "services": [
        {
          "path": "action_logs.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_status_changed",
              "when": "For each persisted log, including repeat status with comment; not receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F7 Sessions",
        "F5 Actions"
      ],
      "cross_feature": true,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/sessions/:id/briefing",
        "title": "Briefing",
        "owner": "F7 Sessions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "sessions.get",
      "services": [
        {
          "path": "sessions.get",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/sessions/:id/summary",
        "title": "Session summary",
        "owner": "F7 Sessions",
        "state": "pending"
      },
      "transport": "API",
      "operation": "sessions.get",
      "services": [
        {
          "path": "sessions.get",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/cycles",
        "title": "Cycles",
        "owner": "F2 Cycles",
        "state": "pending"
      },
      "transport": "API",
      "operation": "cycles.list",
      "services": [
        {
          "path": "cycles.list",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/cycles/new",
        "title": "Set up a cycle",
        "owner": "F2 Cycles",
        "state": "pending"
      },
      "transport": "API",
      "operation": "cycles.create",
      "services": [
        {
          "path": "cycles.create",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": [
            {
              "name": "cycle_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            },
            {
              "name": "cycle_archived",
              "when": "When creation replaces an incumbent active cycle; reason replaced.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/cycles/:id",
        "title": "Cycle",
        "owner": "F2 Cycles",
        "state": "pending"
      },
      "transport": "API",
      "operation": "cycles.get",
      "services": [
        {
          "path": "cycles.get",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/cycles/:id",
        "title": "Cycle",
        "owner": "F2 Cycles",
        "state": "pending"
      },
      "transport": "API",
      "operation": "cycles.update",
      "services": [
        {
          "path": "cycles.update",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": [
            {
              "name": "cycle_archived",
              "when": "When status changes to archived (manual), or activation replaces the incumbent (replaced); never for date/field edits or no-op status.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/cycles/:id",
        "title": "Cycle",
        "owner": "F2 Cycles",
        "state": "pending"
      },
      "transport": "API",
      "operation": "cycles.delete",
      "services": [
        {
          "path": "cycles.delete",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/settings",
        "title": "Settings",
        "owner": "F1 Identity and billing",
        "state": "pending"
      },
      "transport": "API",
      "operation": "user.get",
      "services": [
        {
          "path": "user.get",
          "feature": "F1 Identity and billing",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/settings",
        "title": "Settings",
        "owner": "F1 Identity and billing",
        "state": "pending"
      },
      "transport": "API",
      "operation": "cycles.resolve_active",
      "services": [
        {
          "path": "cycles.resolve_active",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": [
            {
              "name": "cycle_archived",
              "when": "When lazy expiry actually archives the active cycle; reason expired.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F1 Identity and billing",
        "F2 Cycles"
      ],
      "cross_feature": true,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/settings",
        "title": "Settings",
        "owner": "F1 Identity and billing",
        "state": "pending"
      },
      "transport": "API",
      "operation": "billing.get_details",
      "services": [
        {
          "path": "billing.get_details",
          "feature": "F1 Identity and billing",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/settings",
        "title": "Settings",
        "owner": "F1 Identity and billing",
        "state": "pending"
      },
      "transport": "API",
      "operation": "user.update",
      "services": [
        {
          "path": "user.update",
          "feature": "F1 Identity and billing",
          "readiness": "contract-only",
          "events": [
            {
              "name": "profile_updated",
              "when": "When at least one editable profile field changes; payload lists changed names only.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/settings",
        "title": "Settings",
        "owner": "F1 Identity and billing",
        "state": "pending"
      },
      "transport": "API",
      "operation": "user.delete",
      "services": [
        {
          "path": "user.delete",
          "feature": "F1 Identity and billing",
          "readiness": "contract-only",
          "events": [
            {
              "name": "account_deleted",
              "when": "In the successful deletion transaction, before user removal; ON DELETE SET NULL retains the event. Never on failed provider cancellation or replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/settings",
        "title": "Settings",
        "owner": "F1 Identity and billing",
        "state": "pending"
      },
      "transport": "API",
      "operation": "billing.create_portal_session",
      "services": [
        {
          "path": "billing.create_portal_session",
          "feature": "F1 Identity and billing",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/settings",
        "title": "Settings",
        "owner": "F1 Identity and billing",
        "state": "pending"
      },
      "transport": "API",
      "operation": "billing.create_checkout_session",
      "services": [
        {
          "path": "billing.create_checkout_session",
          "feature": "F1 Identity and billing",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/onboarding",
        "title": "Set up your coaching",
        "owner": "F1 Identity and billing",
        "state": "pending"
      },
      "transport": "API",
      "operation": "user.get",
      "services": [
        {
          "path": "user.get",
          "feature": "F1 Identity and billing",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/onboarding",
        "title": "Set up your coaching",
        "owner": "F1 Identity and billing",
        "state": "pending"
      },
      "transport": "API",
      "operation": "billing.create_checkout_session",
      "services": [
        {
          "path": "billing.create_checkout_session",
          "feature": "F1 Identity and billing",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/sign-in",
        "title": "Sign in",
        "owner": "F1 Identity and billing",
        "state": "live"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "No API dependencies declared; local/framework behavior is outside this service map.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/sign-up",
        "title": "Sign up",
        "owner": "F1 Identity and billing",
        "state": "live"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "No API dependencies declared; local/framework behavior is outside this service map.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "page",
        "name": "/oauth/consent",
        "title": "Authorize",
        "owner": "F1 Identity and billing",
        "state": "live"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "No API dependencies declared; local/framework behavior is outside this service map.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "overlay",
        "name": "result-update-dial",
        "title": "Update Result value",
        "owner": "F4 Results",
        "state": "declared"
      },
      "transport": "API",
      "operation": "results.get",
      "services": [
        {
          "path": "results.get",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "overlay",
        "name": "result-update-dial",
        "title": "Update Result value",
        "owner": "F4 Results",
        "state": "declared"
      },
      "transport": "API",
      "operation": "result_logs.create",
      "services": [
        {
          "path": "result_logs.create",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When numeric/performance evidence or a milestone flip is saved; not comment-only rows.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "overlay",
        "name": "result-update-dial",
        "title": "Update Result value",
        "owner": "F4 Results",
        "state": "declared"
      },
      "transport": "API",
      "operation": "habit_logs.set",
      "services": [
        {
          "path": "habit_logs.set",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When a habit mark/unmark changes recorded progress; not comment-only changes or replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "overlay",
        "name": "note-editor",
        "title": "Capture or edit a note",
        "owner": "F6 Notes",
        "state": "declared"
      },
      "transport": "API",
      "operation": "notes.get",
      "services": [
        {
          "path": "notes.get",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "overlay",
        "name": "note-editor",
        "title": "Capture or edit a note",
        "owner": "F6 Notes",
        "state": "declared"
      },
      "transport": "API",
      "operation": "notes.create",
      "services": [
        {
          "path": "notes.create",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": [
            {
              "name": "note_created",
              "when": "After durable creation; not autosave updates or receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "overlay",
        "name": "note-editor",
        "title": "Capture or edit a note",
        "owner": "F6 Notes",
        "state": "declared"
      },
      "transport": "API",
      "operation": "notes.update",
      "services": [
        {
          "path": "notes.update",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "overlay",
        "name": "note-editor",
        "title": "Capture or edit a note",
        "owner": "F6 Notes",
        "state": "declared"
      },
      "transport": "API",
      "operation": "notes.delete",
      "services": [
        {
          "path": "notes.delete",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "cycle_read",
        "title": "cycles",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "list",
      "services": [
        {
          "path": "cycles.list",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_read",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "list or get; skip a missing active cycle.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "cycle",
        "title": "Cycle",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "list",
      "services": [
        {
          "path": "cycles.list",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_read",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "list or get; skip a missing active cycle.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "cycle_read",
        "title": "cycles",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "cycles.get",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        },
        {
          "path": "cycles.get_stored_active",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_read",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "list or get; skip a missing active cycle.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "cycle",
        "title": "Cycle",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "cycles.get",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        },
        {
          "path": "cycles.get_stored_active",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_read",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "list or get; skip a missing active cycle.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "cycle_update",
        "title": "cycles",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [
        {
          "path": "cycles.update",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": [
            {
              "name": "cycle_archived",
              "when": "When status changes to archived (manual), or activation replaces the incumbent (replaced); never for date/field edits or no-op status.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_update",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "Successful date/intention update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "cycle",
        "title": "Cycle",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [
        {
          "path": "cycles.update",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": [
            {
              "name": "cycle_archived",
              "when": "When status changes to archived (manual), or activation replaces the incumbent (replaced); never for date/field edits or no-op status.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_update",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "Successful date/intention update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "cycle_lifecycle",
        "title": "cycles",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "cycles.create",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": [
            {
              "name": "cycle_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            },
            {
              "name": "cycle_archived",
              "when": "When creation replaces an incumbent active cycle; reason replaced.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_lifecycle",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "Successful create/archive/activate.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "cycle",
        "title": "Cycle",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "cycles.create",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": [
            {
              "name": "cycle_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            },
            {
              "name": "cycle_archived",
              "when": "When creation replaces an incumbent active cycle; reason replaced.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_lifecycle",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "Successful create/archive/activate.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "cycle_lifecycle",
        "title": "cycles",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "archive",
      "services": [
        {
          "path": "cycles.update",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": [
            {
              "name": "cycle_archived",
              "when": "When status changes to archived (manual), or activation replaces the incumbent (replaced); never for date/field edits or no-op status.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_lifecycle",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "Successful create/archive/activate.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "cycle",
        "title": "Cycle",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "archive",
      "services": [
        {
          "path": "cycles.update",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": [
            {
              "name": "cycle_archived",
              "when": "When status changes to archived (manual), or activation replaces the incumbent (replaced); never for date/field edits or no-op status.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_lifecycle",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "Successful create/archive/activate.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "cycle_lifecycle",
        "title": "cycles",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "activate",
      "services": [
        {
          "path": "cycles.update",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": [
            {
              "name": "cycle_archived",
              "when": "When status changes to archived (manual), or activation replaces the incumbent (replaced); never for date/field edits or no-op status.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_lifecycle",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "Successful create/archive/activate.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "cycle",
        "title": "Cycle",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "activate",
      "services": [
        {
          "path": "cycles.update",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": [
            {
              "name": "cycle_archived",
              "when": "When status changes to archived (manual), or activation replaces the incumbent (replaced); never for date/field edits or no-op status.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_lifecycle",
      "binding": "bound",
      "outputs": [
        {
          "id": "cycle",
          "when": "Successful create/archive/activate.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Bind list/detail variants and include bounded objectives for a cycle detail; never render a deleted cycle."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "cycle_delete",
        "title": "cycles",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "preview",
      "services": [
        {
          "path": "cycles.preview_deletion",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_delete",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "cycle_delete",
        "title": "cycles",
        "owner": "F2 Cycles",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "commit",
      "services": [
        {
          "path": "cycles.delete",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": "cycle_delete",
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "objective_read",
        "title": "objectives",
        "owner": "F3 Objectives",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "list",
      "services": [
        {
          "path": "objectives.list",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": "objective_read",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "objective_read",
        "title": "objectives",
        "owner": "F3 Objectives",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "objectives.get",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": "objective_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "objective",
          "when": "get for an existing objective.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
        }
      ],
      "note": "",
      "gaps": [
        "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "objective",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "objectives.get",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": "objective_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "objective",
          "when": "get for an existing objective.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "objective_write",
        "title": "objectives",
        "owner": "F3 Objectives",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "objectives.create",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": [
            {
              "name": "objective_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": "objective_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "objective",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
        }
      ],
      "note": "",
      "gaps": [
        "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "objective",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "objectives.create",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": [
            {
              "name": "objective_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": "objective_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "objective",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "objective_write",
        "title": "objectives",
        "owner": "F3 Objectives",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "update",
      "services": [
        {
          "path": "objectives.update",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": "objective_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "objective",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
        }
      ],
      "note": "",
      "gaps": [
        "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "objective",
        "title": "Objective",
        "owner": "F3 Objectives",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "update",
      "services": [
        {
          "path": "objectives.update",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": "objective_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "objective",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Compact MCP records omit cycle, results and actions required by the page-mirroring payload."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "objective_delete",
        "title": "objectives",
        "owner": "F3 Objectives",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "preview",
      "services": [
        {
          "path": "objectives.preview_deletion",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": "objective_delete",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "objective_delete",
        "title": "objectives",
        "owner": "F3 Objectives",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "commit",
      "services": [
        {
          "path": "objectives.delete",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": "objective_delete",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "result_read",
        "title": "results",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "list",
      "services": [
        {
          "path": "results.list",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result_read",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "result_read",
        "title": "results",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "results.get",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "result",
          "when": "get for an existing result.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
        }
      ],
      "note": "",
      "gaps": [
        "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "result",
        "title": "Result",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "results.get",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "result",
          "when": "get for an existing result.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "result_read",
        "title": "results",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "history",
      "services": [
        {
          "path": "results.history",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result_read",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "result_write",
        "title": "results",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "results.create",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "result",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
        }
      ],
      "note": "",
      "gaps": [
        "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "result",
        "title": "Result",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "results.create",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "result",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "result_write",
        "title": "results",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "update",
      "services": [
        {
          "path": "results.update",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "result",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
        }
      ],
      "note": "",
      "gaps": [
        "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "result",
        "title": "Result",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "update",
      "services": [
        {
          "path": "results.update",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "result",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "result_delete",
        "title": "results",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "preview",
      "services": [
        {
          "path": "results.preview_deletion",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result_delete",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "result_delete",
        "title": "results",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "commit",
      "services": [
        {
          "path": "results.delete",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "result_delete",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "action_read",
        "title": "actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "list",
      "services": [
        {
          "path": "actions.list",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "due_actions",
          "when": "list; open actions grouped by objective in stored order.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
        }
      ],
      "note": "",
      "gaps": [
        "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "due_actions",
        "title": "Due actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "list",
      "services": [
        {
          "path": "actions.list",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "due_actions",
          "when": "list; open actions grouped by objective in stored order.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "action_read",
        "title": "actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "actions.get",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "action",
          "when": "get for an existing action.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply parent labels and bounded action history alongside the compact MCP action."
        }
      ],
      "note": "",
      "gaps": [
        "Supply parent labels and bounded action history alongside the compact MCP action."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "action",
        "title": "Action",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "actions.get",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "action",
          "when": "get for an existing action.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply parent labels and bounded action history alongside the compact MCP action."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Supply parent labels and bounded action history alongside the compact MCP action."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "action_read",
        "title": "actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "history",
      "services": [
        {
          "path": "actions.history",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_read",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "action_write",
        "title": "actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "actions.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "due_actions",
          "when": "Successful create/update; refreshed open-action snapshot.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
        },
        {
          "id": "action",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply parent labels and bounded action history alongside the compact MCP action."
        }
      ],
      "note": "",
      "gaps": [
        "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient.",
        "Supply parent labels and bounded action history alongside the compact MCP action."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "due_actions",
        "title": "Due actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "actions.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "due_actions",
          "when": "Successful create/update; refreshed open-action snapshot.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "action",
        "title": "Action",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "actions.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_created",
              "when": "After durable creation; no replay duplicate.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "action",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply parent labels and bounded action history alongside the compact MCP action."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Supply parent labels and bounded action history alongside the compact MCP action."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "action_write",
        "title": "actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "update",
      "services": [
        {
          "path": "actions.update",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "due_actions",
          "when": "Successful create/update; refreshed open-action snapshot.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
        },
        {
          "id": "action",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply parent labels and bounded action history alongside the compact MCP action."
        }
      ],
      "note": "",
      "gaps": [
        "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient.",
        "Supply parent labels and bounded action history alongside the compact MCP action."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "due_actions",
        "title": "Due actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "update",
      "services": [
        {
          "path": "actions.update",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "due_actions",
          "when": "Successful create/update; refreshed open-action snapshot.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "action",
        "title": "Action",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "update",
      "services": [
        {
          "path": "actions.update",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "action",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply parent labels and bounded action history alongside the compact MCP action."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Supply parent labels and bounded action history alongside the compact MCP action."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "action_delete",
        "title": "actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "preview",
      "services": [
        {
          "path": "actions.preview_deletion",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_delete",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "action_delete",
        "title": "actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "commit",
      "services": [
        {
          "path": "actions.delete",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_delete",
      "binding": "planned",
      "outputs": [
        {
          "id": "due_actions",
          "when": "Successful commit; remaining open actions only, never the deleted record.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
        }
      ],
      "note": "",
      "gaps": [
        "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "due_actions",
        "title": "Due actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "commit",
      "services": [
        {
          "path": "actions.delete",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "action_delete",
      "binding": "planned",
      "outputs": [
        {
          "id": "due_actions",
          "when": "Successful commit; remaining open actions only, never the deleted record.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "note_read",
        "title": "notes",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "list",
      "services": [
        {
          "path": "notes.list",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "notes",
          "when": "list; bounded recent notes with the resolved window.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
        }
      ],
      "note": "",
      "gaps": [
        "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "notes",
        "title": "Notes",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "list",
      "services": [
        {
          "path": "notes.list",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "notes",
          "when": "list; bounded recent notes with the resolved window.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "note_read",
        "title": "notes",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "notes.get",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "note",
          "when": "get for an existing note.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
        }
      ],
      "note": "",
      "gaps": [
        "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "note",
        "title": "Note",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "notes.get",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "note",
          "when": "get for an existing note.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "note_write",
        "title": "notes",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "notes.create",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": [
            {
              "name": "note_created",
              "when": "After durable creation; not autosave updates or receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "notes",
          "when": "Successful create/update; refreshed list.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
        },
        {
          "id": "note",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
        }
      ],
      "note": "",
      "gaps": [
        "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination.",
        "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "notes",
        "title": "Notes",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "notes.create",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": [
            {
              "name": "note_created",
              "when": "After durable creation; not autosave updates or receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "notes",
          "when": "Successful create/update; refreshed list.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "note",
        "title": "Note",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "create",
      "services": [
        {
          "path": "notes.create",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": [
            {
              "name": "note_created",
              "when": "After durable creation; not autosave updates or receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "note",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "note_write",
        "title": "notes",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "update",
      "services": [
        {
          "path": "notes.update",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "notes",
          "when": "Successful create/update; refreshed list.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
        },
        {
          "id": "note",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
        }
      ],
      "note": "",
      "gaps": [
        "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination.",
        "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "notes",
        "title": "Notes",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "update",
      "services": [
        {
          "path": "notes.update",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "notes",
          "when": "Successful create/update; refreshed list.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "note",
        "title": "Note",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "update",
      "services": [
        {
          "path": "notes.update",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_write",
      "binding": "planned",
      "outputs": [
        {
          "id": "note",
          "when": "Successful create/update.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Bind the note field from structuredContent to the declared payload; stored text stays untrusted."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "note_delete",
        "title": "notes",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "preview",
      "services": [
        {
          "path": "notes.preview_deletion",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_delete",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "note_delete",
        "title": "notes",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "commit",
      "services": [
        {
          "path": "notes.delete",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_delete",
      "binding": "planned",
      "outputs": [
        {
          "id": "notes",
          "when": "Successful commit; remaining notes only.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
        }
      ],
      "note": "",
      "gaps": [
        "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "notes",
        "title": "Notes",
        "owner": "F6 Notes",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "commit",
      "services": [
        {
          "path": "notes.delete",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": "note_delete",
      "binding": "planned",
      "outputs": [
        {
          "id": "notes",
          "when": "Successful commit; remaining notes only.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Project list responses and obtain the bounded refreshed list after a mutation; never repeat writes for pagination."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "user_read",
        "title": "user",
        "owner": "F1 Identity and billing",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [
        {
          "path": "user.get",
          "feature": "F1 Identity and billing",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": "user_read",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "user_update",
        "title": "user",
        "owner": "F1 Identity and billing",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [
        {
          "path": "user.update",
          "feature": "F1 Identity and billing",
          "readiness": "contract-only",
          "events": [
            {
              "name": "profile_updated",
              "when": "When at least one editable profile field changes; payload lists changed names only.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": "user_update",
      "binding": "planned",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "session_read",
        "title": "sessions",
        "owner": "F7 Sessions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "list",
      "services": [
        {
          "path": "sessions.list",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": "session_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "session",
          "when": "list or get for a stored session; skip missing-session results.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
        }
      ],
      "note": "",
      "gaps": [
        "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "session",
        "title": "Session",
        "owner": "F7 Sessions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "list",
      "services": [
        {
          "path": "sessions.list",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": "session_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "session",
          "when": "list or get for a stored session; skip missing-session results.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "session_read",
        "title": "sessions",
        "owner": "F7 Sessions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "sessions.get_stored",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": "session_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "session",
          "when": "list or get for a stored session; skip missing-session results.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
        },
        {
          "id": "session_document",
          "when": "get with a selected stored briefing or summary document.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Provide the complete session record and selected canonical document text; render stored text as data, never instructions."
        }
      ],
      "note": "",
      "gaps": [
        "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads.",
        "Provide the complete session record and selected canonical document text; render stored text as data, never instructions."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "session",
        "title": "Session",
        "owner": "F7 Sessions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "sessions.get_stored",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": "session_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "session",
          "when": "list or get for a stored session; skip missing-session results.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "session_document",
        "title": "Session document",
        "owner": "F7 Sessions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "get",
      "services": [
        {
          "path": "sessions.get_stored",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": "session_read",
      "binding": "planned",
      "outputs": [
        {
          "id": "session_document",
          "when": "get with a selected stored briefing or summary document.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Provide the complete session record and selected canonical document text; render stored text as data, never instructions."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Provide the complete session record and selected canonical document text; render stored text as data, never instructions."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "session_start",
        "title": "sessions",
        "owner": "F7 Sessions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [
        {
          "path": "sessions.start",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "session_started",
              "when": "Only when a new session is persisted; not existing-session reuse.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F7 Sessions",
        "F3 Objectives"
      ],
      "cross_feature": true,
      "via": "session_start",
      "binding": "planned",
      "outputs": [
        {
          "id": "progress",
          "when": "Active access only; render the current cycle and objectives/results snapshot.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Project the active briefing into the dashboard payload; no coaching card for unpaid access."
        },
        {
          "id": "session_document",
          "when": "Active access only; saved briefing document.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Provide the complete session record and selected canonical document text; render stored text as data, never instructions."
        }
      ],
      "note": "",
      "gaps": [
        "Project the active briefing into the dashboard payload; no coaching card for unpaid access.",
        "Provide the complete session record and selected canonical document text; render stored text as data, never instructions."
      ]
    },
    {
      "entry": {
        "kind": "prompt",
        "name": "coaching_session",
        "title": "Coaching session",
        "owner": "",
        "state": "unavailable"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [
        {
          "path": "sessions.start",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "session_started",
              "when": "Only when a new session is persisted; not existing-session reuse.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F7 Sessions",
        "F3 Objectives"
      ],
      "cross_feature": true,
      "via": "session_start",
      "binding": "planned",
      "outputs": [
        {
          "id": "progress",
          "when": "Active access only; render the current cycle and objectives/results snapshot.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Project the active briefing into the dashboard payload; no coaching card for unpaid access."
        },
        {
          "id": "session_document",
          "when": "Active access only; saved briefing document.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Provide the complete session record and selected canonical document text; render stored text as data, never instructions."
        }
      ],
      "note": "Required capability; declaration does not prescribe execution order.",
      "gaps": [
        "Project the active briefing into the dashboard payload; no coaching card for unpaid access.",
        "Provide the complete session record and selected canonical document text; render stored text as data, never instructions."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "progress",
        "title": "Progress",
        "owner": "F3 Objectives",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [
        {
          "path": "sessions.start",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "session_started",
              "when": "Only when a new session is persisted; not existing-session reuse.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F3 Objectives",
        "F7 Sessions"
      ],
      "cross_feature": true,
      "via": "session_start",
      "binding": "planned",
      "outputs": [
        {
          "id": "progress",
          "when": "Active access only; render the current cycle and objectives/results snapshot.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Project the active briefing into the dashboard payload; no coaching card for unpaid access."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Project the active briefing into the dashboard payload; no coaching card for unpaid access."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "session_document",
        "title": "Session document",
        "owner": "F7 Sessions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [
        {
          "path": "sessions.start",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "session_started",
              "when": "Only when a new session is persisted; not existing-session reuse.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": "session_start",
      "binding": "planned",
      "outputs": [
        {
          "id": "session_document",
          "when": "Active access only; saved briefing document.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Provide the complete session record and selected canonical document text; render stored text as data, never instructions."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Provide the complete session record and selected canonical document text; render stored text as data, never instructions."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "session_close",
        "title": "sessions",
        "owner": "F7 Sessions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [
        {
          "path": "sessions.close",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "session_summary_written",
              "when": "On the first successful close with summary; not replay or forced stale close.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": "session_close",
      "binding": "planned",
      "outputs": [
        {
          "id": "session",
          "when": "Successful explicit closure; show the saved summary and session actions.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
        }
      ],
      "note": "",
      "gaps": [
        "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
      ]
    },
    {
      "entry": {
        "kind": "prompt",
        "name": "coaching_session",
        "title": "Coaching session",
        "owner": "",
        "state": "unavailable"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [
        {
          "path": "sessions.close",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "session_summary_written",
              "when": "On the first successful close with summary; not replay or forced stale close.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": "session_close",
      "binding": "planned",
      "outputs": [
        {
          "id": "session",
          "when": "Successful explicit closure; show the saved summary and session actions.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
        }
      ],
      "note": "Required capability; declaration does not prescribe execution order.",
      "gaps": [
        "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "session",
        "title": "Session",
        "owner": "F7 Sessions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [
        {
          "path": "sessions.close",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "session_summary_written",
              "when": "On the first successful close with summary; not replay or forced stale close.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": "session_close",
      "binding": "planned",
      "outputs": [
        {
          "id": "session",
          "when": "Successful explicit closure; show the saved summary and session actions.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Supply the detail/list variant and bounded session actions; compact session results do not satisfy detail payloads."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "progress_record",
        "title": "progress",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "result",
      "services": [
        {
          "path": "result_logs.create",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When numeric/performance evidence or a milestone flip is saved; not comment-only rows.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "progress_record",
      "binding": "planned",
      "outputs": [
        {
          "id": "result",
          "when": "Successful result or habit evidence entry.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
        }
      ],
      "note": "",
      "gaps": [
        "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "result",
        "title": "Result",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "result",
      "services": [
        {
          "path": "result_logs.create",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When numeric/performance evidence or a milestone flip is saved; not comment-only rows.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "progress_record",
      "binding": "planned",
      "outputs": [
        {
          "id": "result",
          "when": "Successful result or habit evidence entry.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "progress_record",
        "title": "progress",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "habit",
      "services": [
        {
          "path": "habit_logs.set",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When a habit mark/unmark changes recorded progress; not comment-only changes or replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "progress_record",
      "binding": "planned",
      "outputs": [
        {
          "id": "result",
          "when": "Successful result or habit evidence entry.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
        }
      ],
      "note": "",
      "gaps": [
        "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "result",
        "title": "Result",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "habit",
      "services": [
        {
          "path": "habit_logs.set",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": [
            {
              "name": "result_update_recorded",
              "when": "When a habit mark/unmark changes recorded progress; not comment-only changes or replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": "progress_record",
      "binding": "planned",
      "outputs": [
        {
          "id": "result",
          "when": "Successful result or habit evidence entry.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Supply bounded parent figures, trend and evidence alongside the compact MCP result."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "progress_record",
        "title": "progress",
        "owner": "F4 Results",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "action",
      "services": [
        {
          "path": "action_logs.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_status_changed",
              "when": "For each persisted log, including repeat status with comment; not receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F4 Results",
        "F5 Actions"
      ],
      "cross_feature": true,
      "via": "progress_record",
      "binding": "planned",
      "outputs": [
        {
          "id": "due_actions",
          "when": "Successful action evidence entry; refreshed open-action snapshot.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
        }
      ],
      "note": "",
      "gaps": [
        "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
      ]
    },
    {
      "entry": {
        "kind": "widget",
        "name": "due_actions",
        "title": "Due actions",
        "owner": "F5 Actions",
        "state": "contract-only"
      },
      "transport": "MCP",
      "operation": "action",
      "services": [
        {
          "path": "action_logs.create",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "action_status_changed",
              "when": "For each persisted log, including repeat status with comment; not receipt replay.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": "progress_record",
      "binding": "planned",
      "outputs": [
        {
          "id": "due_actions",
          "when": "Successful action evidence entry; refreshed open-action snapshot.",
          "binding": "planned",
          "readiness": "contract-only",
          "gap": "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
        }
      ],
      "note": "Widget receives the tool result; it does not call the service.",
      "gaps": [
        "Compose the cycle, objective grouping and remaining open actions server-side; a mutation receipt alone is insufficient."
      ]
    },
    {
      "entry": {
        "kind": "tool",
        "name": "example_list",
        "title": "Retained scaffold",
        "owner": "Temporary scaffold reference",
        "state": "implemented"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [],
      "features": [
        "Temporary scaffold reference"
      ],
      "cross_feature": false,
      "via": "example_list",
      "binding": null,
      "outputs": [],
      "note": "Retained scaffold; no product service descriptor is declared.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "widget",
        "name": "example",
        "title": "Example",
        "owner": "Temporary scaffold reference",
        "state": "implemented"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [],
      "features": [
        "Temporary scaffold reference"
      ],
      "cross_feature": false,
      "via": "example_list",
      "binding": null,
      "outputs": [
        {
          "id": "example",
          "when": "Successful list.",
          "binding": "bound",
          "readiness": "implemented",
          "gap": null
        }
      ],
      "note": "Retained scaffold; no product service descriptor is declared.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "tool",
        "name": "example_create",
        "title": "Retained scaffold",
        "owner": "Temporary scaffold reference",
        "state": "implemented"
      },
      "transport": "MCP",
      "operation": "call",
      "services": [],
      "features": [
        "Temporary scaffold reference"
      ],
      "cross_feature": false,
      "via": "example_create",
      "binding": null,
      "outputs": [],
      "note": "Retained scaffold; no product service descriptor is declared.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "api",
        "name": "cycles.preview_deletion",
        "title": "No declared page or overlay consumer",
        "owner": "",
        "state": "declared"
      },
      "transport": "API",
      "operation": "cycles.preview_deletion",
      "services": [
        {
          "path": "cycles.preview_deletion",
          "feature": "F2 Cycles",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F2 Cycles"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "api",
        "name": "objectives.preview_deletion",
        "title": "No declared page or overlay consumer",
        "owner": "",
        "state": "declared"
      },
      "transport": "API",
      "operation": "objectives.preview_deletion",
      "services": [
        {
          "path": "objectives.preview_deletion",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "api",
        "name": "objectives.list",
        "title": "No declared page or overlay consumer",
        "owner": "",
        "state": "declared"
      },
      "transport": "API",
      "operation": "objectives.list",
      "services": [
        {
          "path": "objectives.list",
          "feature": "F3 Objectives",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F3 Objectives"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "api",
        "name": "results.preview_deletion",
        "title": "No declared page or overlay consumer",
        "owner": "",
        "state": "declared"
      },
      "transport": "API",
      "operation": "results.preview_deletion",
      "services": [
        {
          "path": "results.preview_deletion",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "api",
        "name": "results.list",
        "title": "No declared page or overlay consumer",
        "owner": "",
        "state": "declared"
      },
      "transport": "API",
      "operation": "results.list",
      "services": [
        {
          "path": "results.list",
          "feature": "F4 Results",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F4 Results"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "api",
        "name": "actions.preview_deletion",
        "title": "No declared page or overlay consumer",
        "owner": "",
        "state": "declared"
      },
      "transport": "API",
      "operation": "actions.preview_deletion",
      "services": [
        {
          "path": "actions.preview_deletion",
          "feature": "F5 Actions",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F5 Actions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "api",
        "name": "notes.preview_deletion",
        "title": "No declared page or overlay consumer",
        "owner": "",
        "state": "declared"
      },
      "transport": "API",
      "operation": "notes.preview_deletion",
      "services": [
        {
          "path": "notes.preview_deletion",
          "feature": "F6 Notes",
          "readiness": "contract-only",
          "events": []
        }
      ],
      "features": [
        "F6 Notes"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "api",
        "name": "sessions.start",
        "title": "No declared page or overlay consumer",
        "owner": "",
        "state": "declared"
      },
      "transport": "API",
      "operation": "sessions.start",
      "services": [
        {
          "path": "sessions.start",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "session_started",
              "when": "Only when a new session is persisted; not existing-session reuse.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "api",
        "name": "sessions.close",
        "title": "No declared page or overlay consumer",
        "owner": "",
        "state": "declared"
      },
      "transport": "API",
      "operation": "sessions.close",
      "services": [
        {
          "path": "sessions.close",
          "feature": "F7 Sessions",
          "readiness": "contract-only",
          "events": [
            {
              "name": "session_summary_written",
              "when": "On the first successful close with summary; not replay or forced stale close.",
              "gaps": []
            }
          ]
        }
      ],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": "bound",
      "outputs": [],
      "note": "",
      "gaps": []
    },
    {
      "entry": {
        "kind": "external-event",
        "name": "chat_tool_used",
        "title": "MCP tool call outcome; no stored coaching content.",
        "owner": "F7 Sessions",
        "state": "declared"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "F7 Sessions"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "External producers: mcp-boundary — packages/core/src/shared/mcp/index.ts: For a tool call with an authenticated actor; both success and failure outcomes.",
      "gaps": [
        "Specify treatment of calls without authenticated identity; tenant event storage requires an actor."
      ]
    },
    {
      "entry": {
        "kind": "external-event",
        "name": "account_created",
        "title": "Durable account creation; user_id matches the canonical user UUID.",
        "owner": "F1 Identity and billing",
        "state": "declared"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "External producers: auth-hook — packages/core/src/shared/auth/server.ts: After a newly persisted account.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "external-event",
        "name": "subscription_started",
        "title": "First transition to active paid access.",
        "owner": "F1 Identity and billing",
        "state": "declared"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "External producers: billing-webhook — packages/core/src/features/identity-billing/handler.ts: On the first verified transition to active; not checkout URL creation.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "external-event",
        "name": "subscription_cancelled",
        "title": "Once per scheduled or immediate cancellation; no duplicate webhook delivery.",
        "owner": "F1 Identity and billing",
        "state": "declared"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "External producers: billing-webhook — packages/core/src/features/identity-billing/handler.ts: On a newly applied scheduled or immediate cancellation, not a duplicate delivery.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "external-event",
        "name": "connector_authorised",
        "title": "New durable connector consent; not a replay.",
        "owner": "F1 Identity and billing",
        "state": "declared"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "External producers: auth-hook — packages/core/src/shared/auth/server.ts: After new connector consent is persisted.",
      "gaps": []
    },
    {
      "entry": {
        "kind": "external-event",
        "name": "onboarding_step_completed",
        "title": "Verified onboarding step completion; never inferred from a redirect alone.",
        "owner": "F1 Identity and billing",
        "state": "declared"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "F1 Identity and billing"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "External producers: page — packages/core/src/features/identity-billing/onboarding.page.tsx: After verified step completion; no new public event API is authorized.",
      "gaps": [
        "Specify trusted server recording and repeat-visit deduplication; the page alone is not an authorized event writer."
      ]
    },
    {
      "entry": {
        "kind": "external-event",
        "name": "example_created",
        "title": "Retained scaffold: one event per fresh example write in the same transaction.",
        "owner": "packages/core/src/features/example/docs.md",
        "state": "declared"
      },
      "transport": null,
      "operation": null,
      "services": [],
      "features": [
        "packages/core/src/features/example/docs.md"
      ],
      "cross_feature": false,
      "via": null,
      "binding": null,
      "outputs": [],
      "note": "No service or external producer declared.",
      "gaps": []
    }
  ]
}
