{
  "schemaVersion": 1,
  "generatedFrom": "src/data/catalogue.js",
  "wiki": {
    "title": "Co.Property internal wiki",
    "version": "2026.10.20.2",
    "date": "20 October 2026"
  },
  "page": {
    "stableId": "turnover#page",
    "pageId": "turnover",
    "pageTitle": "Turnover readiness: evidence before a ready decision",
    "pageSlug": "workflows/turnover-evidence",
    "sectionId": "page",
    "sectionTitle": "Turnover readiness: evidence before a ready decision",
    "sectionProse": [
      "A turnover prepares a property between stays. Assignment, cleaning completion, evidence, verification, and readiness are separate states that must refer to the same confirmed property.",
      "Make the actor, decision, evidence, and exception path explicit so “ready” only appears when the supporting checks justify it.",
      "A confirmed departure leads to assignment, then work evidence, then verifier decision. Accepted evidence becomes a readiness result; missing evidence or stale source information becomes an owned exception.",
      "Evidence changes the state; assignment does not",
      "An assigned cleaning task tells the team that work is expected. It does not show the work occurred, whether it applied to the correct property, or whether a responsible person accepted it. A completed task still needs the required evidence and verification before it can support a readiness decision.",
      "The dated dashboard screenshot is helpful because it labels unfinished work as in progress or unverified. Treat it as a screen example, not proof that the same values or states are current now.",
      "Actors perform work; verifiers make readiness decisions",
      "A useful turnover flow names the actor who performs or reports the work, the source record that identifies the stay, and the person authorised to accept the readiness result. Those roles can be connected, but they should not disappear into one generic “done” label.",
      "The actor should supply the missing result when evidence is absent. The verifier should record an accepted outcome only when supporting checks justify it. The operational display should make that distinction legible to the next person.",
      "Exceptions stay visible until the source or evidence is repaired",
      "Provider information that is old or incomplete needs a coverage confirmation or a new source read. A task with no completion evidence needs a request for the missing result. A mismatched property identifier needs a verified reconciliation. Each exception has a different repair path.",
      "Do not resolve these by silently promoting a card to ready. The correct outcome may be an explicit blocker for the next arrival, with a named owner and a scheduled next check."
    ],
    "version": "2026.10.20.2",
    "date": "20 October 2026",
    "status": "In progress",
    "currentStatus": "In progress — Turno identity is confirmed, but full task/evidence/verifier acceptance is still pending.",
    "proposedStatus": "Exercise one real turnover with an owner, evidence, and manager verification before treating the flow as accepted.",
    "expectedOutcome": "A next-arrival decision can be traced to a confirmed property, the right evidence, and a named verifier.",
    "tests": [
      "Check that task assignment, task completion, evidence, and accepted readiness have distinct labels.",
      "Check a missing-evidence fixture results in an exception, never an implied ready state."
    ],
    "sourcePointers": [
      "coprop_kb/workflows.py",
      "coprop_kb/operations.py",
      "coprop_kb/readers/turno.py",
      "tests/test_workflows.py",
      "tests/test_operations.py",
      "tests/test_reader_turno.py",
      "Handoff / pages/workflows.html",
      "Handoff / START-HERE.html",
      "Handoff / pages/app-tour.html"
    ],
    "related": [
      {
        "id": "property-lifecycle",
        "title": "Property lifecycle: from enquiry to review",
        "summary": "A property service lifecycle connects owner needs, identity, stays, readiness, settlement, and learning. It is a model to validate, not a claim that every handover is automated.",
        "status": "Checked",
        "path": "/workflows/property-lifecycle/"
      },
      {
        "id": "dashboard-tv",
        "title": "Dashboard and passive TV: shared views, not source authority",
        "summary": "The staff dashboard and passive TV surfaces make a shared operating picture visible. They consume projections; they do not become the authoritative writer for company state.",
        "status": "Checked",
        "path": "/systems/dashboard-and-tv/"
      },
      {
        "id": "line-boundaries",
        "title": "LINE boundaries: separate identities, accepted records, clear limits",
        "summary": "LINE employee operations bot, Hermes adapter, and company Official Account are separate identities. A message flow only becomes operational evidence when the right record and acceptance boundary are confirmed.",
        "status": "In progress",
        "path": "/workflows/line-boundaries/"
      }
    ],
    "sshTarget": {
      "alias": "coproperty-office",
      "hostname": "copropertys-mac-mini.tail3ab9e5.ts.net",
      "user": "coproperty",
      "projectPath": "/Users/coproperty/Projects/coproperty-office-os",
      "codexPath": "/Users/coproperty/.local/bin/codex",
      "hostFingerprint": "SHA256:UUFmlsdclEmRtyRWNqAdVYUoFxeUkRUGhbzObQPsOPg",
      "requiredChecks": [
        "Verify the hostname, project path, and repository status before any work.",
        "Create an isolated task worktree outside the installed project.",
        "Never modify the installed runtime from this contribution path."
      ]
    }
  },
  "sections": {
    "evidence-state": {
      "stableId": "turnover#evidence-state",
      "pageId": "turnover",
      "pageTitle": "Turnover readiness: evidence before a ready decision",
      "pageSlug": "workflows/turnover-evidence",
      "sectionId": "evidence-state",
      "sectionTitle": "Evidence changes the state; assignment does not",
      "sectionProse": [
        "An assigned cleaning task tells the team that work is expected. It does not show the work occurred, whether it applied to the correct property, or whether a responsible person accepted it. A completed task still needs the required evidence and verification before it can support a readiness decision.",
        "The dated dashboard screenshot is helpful because it labels unfinished work as in progress or unverified. Treat it as a screen example, not proof that the same values or states are current now."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "In progress",
      "currentStatus": "In progress — the end-to-end evidence and verifier acceptance path is not confirmed as complete.",
      "proposedStatus": "Use a real, current turnover to record task evidence, verifier identity, decision time, and any exception.",
      "expectedOutcome": "The team can explain why a property is ready or why it is not, without relying on a status label alone.",
      "tests": [
        "Use a fixture where the task is complete but evidence is absent; assert the output is awaiting evidence.",
        "Use a fixture where the evidence belongs to a different property; assert an identity exception."
      ],
      "sourcePointers": [
        "coprop_kb/workflows.py",
        "coprop_kb/operations.py",
        "coprop_kb/readers/turno.py",
        "tests/test_workflows.py",
        "tests/test_operations.py",
        "tests/test_reader_turno.py",
        "Handoff / pages/workflows.html",
        "Handoff / START-HERE.html",
        "Handoff / pages/app-tour.html"
      ],
      "related": [
        {
          "id": "property-lifecycle",
          "title": "Property lifecycle: from enquiry to review",
          "summary": "A property service lifecycle connects owner needs, identity, stays, readiness, settlement, and learning. It is a model to validate, not a claim that every handover is automated.",
          "status": "Checked",
          "path": "/workflows/property-lifecycle/"
        },
        {
          "id": "dashboard-tv",
          "title": "Dashboard and passive TV: shared views, not source authority",
          "summary": "The staff dashboard and passive TV surfaces make a shared operating picture visible. They consume projections; they do not become the authoritative writer for company state.",
          "status": "Checked",
          "path": "/systems/dashboard-and-tv/"
        },
        {
          "id": "line-boundaries",
          "title": "LINE boundaries: separate identities, accepted records, clear limits",
          "summary": "LINE employee operations bot, Hermes adapter, and company Official Account are separate identities. A message flow only becomes operational evidence when the right record and acceptance boundary are confirmed.",
          "status": "In progress",
          "path": "/workflows/line-boundaries/"
        }
      ],
      "sshTarget": {
        "alias": "coproperty-office",
        "hostname": "copropertys-mac-mini.tail3ab9e5.ts.net",
        "user": "coproperty",
        "projectPath": "/Users/coproperty/Projects/coproperty-office-os",
        "codexPath": "/Users/coproperty/.local/bin/codex",
        "hostFingerprint": "SHA256:UUFmlsdclEmRtyRWNqAdVYUoFxeUkRUGhbzObQPsOPg",
        "requiredChecks": [
          "Verify the hostname, project path, and repository status before any work.",
          "Create an isolated task worktree outside the installed project.",
          "Never modify the installed runtime from this contribution path."
        ]
      }
    },
    "actor-decision": {
      "stableId": "turnover#actor-decision",
      "pageId": "turnover",
      "pageTitle": "Turnover readiness: evidence before a ready decision",
      "pageSlug": "workflows/turnover-evidence",
      "sectionId": "actor-decision",
      "sectionTitle": "Actors perform work; verifiers make readiness decisions",
      "sectionProse": [
        "A useful turnover flow names the actor who performs or reports the work, the source record that identifies the stay, and the person authorised to accept the readiness result. Those roles can be connected, but they should not disappear into one generic “done” label.",
        "The actor should supply the missing result when evidence is absent. The verifier should record an accepted outcome only when supporting checks justify it. The operational display should make that distinction legible to the next person."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "Checked",
      "currentStatus": "Checked — this decision separation is a documented operating requirement; individual final ownership remains to be confirmed in live practice.",
      "proposedStatus": "Record current role ownership in the actual task and decision records rather than assuming a permanent staffing structure.",
      "expectedOutcome": "A reviewer can identify who needs to act and who is allowed to accept the result.",
      "tests": [
        "Check the diagram identifies source, actor, evidence, verifier, and result nodes.",
        "Check a context prompt includes the selected actor/decision section, not the entire handbook."
      ],
      "sourcePointers": [
        "coprop_kb/workflows.py",
        "coprop_kb/operations.py",
        "coprop_kb/readers/turno.py",
        "tests/test_workflows.py",
        "tests/test_operations.py",
        "tests/test_reader_turno.py",
        "Handoff / pages/workflows.html",
        "Handoff / START-HERE.html",
        "Handoff / pages/app-tour.html"
      ],
      "related": [
        {
          "id": "property-lifecycle",
          "title": "Property lifecycle: from enquiry to review",
          "summary": "A property service lifecycle connects owner needs, identity, stays, readiness, settlement, and learning. It is a model to validate, not a claim that every handover is automated.",
          "status": "Checked",
          "path": "/workflows/property-lifecycle/"
        },
        {
          "id": "dashboard-tv",
          "title": "Dashboard and passive TV: shared views, not source authority",
          "summary": "The staff dashboard and passive TV surfaces make a shared operating picture visible. They consume projections; they do not become the authoritative writer for company state.",
          "status": "Checked",
          "path": "/systems/dashboard-and-tv/"
        },
        {
          "id": "line-boundaries",
          "title": "LINE boundaries: separate identities, accepted records, clear limits",
          "summary": "LINE employee operations bot, Hermes adapter, and company Official Account are separate identities. A message flow only becomes operational evidence when the right record and acceptance boundary are confirmed.",
          "status": "In progress",
          "path": "/workflows/line-boundaries/"
        }
      ],
      "sshTarget": {
        "alias": "coproperty-office",
        "hostname": "copropertys-mac-mini.tail3ab9e5.ts.net",
        "user": "coproperty",
        "projectPath": "/Users/coproperty/Projects/coproperty-office-os",
        "codexPath": "/Users/coproperty/.local/bin/codex",
        "hostFingerprint": "SHA256:UUFmlsdclEmRtyRWNqAdVYUoFxeUkRUGhbzObQPsOPg",
        "requiredChecks": [
          "Verify the hostname, project path, and repository status before any work.",
          "Create an isolated task worktree outside the installed project.",
          "Never modify the installed runtime from this contribution path."
        ]
      }
    },
    "exception-flow": {
      "stableId": "turnover#exception-flow",
      "pageId": "turnover",
      "pageTitle": "Turnover readiness: evidence before a ready decision",
      "pageSlug": "workflows/turnover-evidence",
      "sectionId": "exception-flow",
      "sectionTitle": "Exceptions stay visible until the source or evidence is repaired",
      "sectionProse": [
        "Provider information that is old or incomplete needs a coverage confirmation or a new source read. A task with no completion evidence needs a request for the missing result. A mismatched property identifier needs a verified reconciliation. Each exception has a different repair path.",
        "Do not resolve these by silently promoting a card to ready. The correct outcome may be an explicit blocker for the next arrival, with a named owner and a scheduled next check."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "In progress",
      "currentStatus": "In progress — provider freshness and end-to-end verifier acceptance remain pending operational evidence.",
      "proposedStatus": "Capture the source window, exception type, owner, decision deadline, and closing evidence for every resolved exception.",
      "expectedOutcome": "A missing fact becomes work that can be tracked and reviewed instead of an unsafe assumption.",
      "tests": [
        "Test stale provider data, missing evidence, and identity mismatch as distinct failure fixtures.",
        "Check no exception fixture emits an accepted readiness outcome."
      ],
      "sourcePointers": [
        "coprop_kb/workflows.py",
        "coprop_kb/operations.py",
        "coprop_kb/readers/turno.py",
        "tests/test_workflows.py",
        "tests/test_operations.py",
        "tests/test_reader_turno.py",
        "Handoff / pages/workflows.html",
        "Handoff / START-HERE.html",
        "Handoff / pages/app-tour.html"
      ],
      "related": [
        {
          "id": "property-lifecycle",
          "title": "Property lifecycle: from enquiry to review",
          "summary": "A property service lifecycle connects owner needs, identity, stays, readiness, settlement, and learning. It is a model to validate, not a claim that every handover is automated.",
          "status": "Checked",
          "path": "/workflows/property-lifecycle/"
        },
        {
          "id": "dashboard-tv",
          "title": "Dashboard and passive TV: shared views, not source authority",
          "summary": "The staff dashboard and passive TV surfaces make a shared operating picture visible. They consume projections; they do not become the authoritative writer for company state.",
          "status": "Checked",
          "path": "/systems/dashboard-and-tv/"
        },
        {
          "id": "line-boundaries",
          "title": "LINE boundaries: separate identities, accepted records, clear limits",
          "summary": "LINE employee operations bot, Hermes adapter, and company Official Account are separate identities. A message flow only becomes operational evidence when the right record and acceptance boundary are confirmed.",
          "status": "In progress",
          "path": "/workflows/line-boundaries/"
        }
      ],
      "sshTarget": {
        "alias": "coproperty-office",
        "hostname": "copropertys-mac-mini.tail3ab9e5.ts.net",
        "user": "coproperty",
        "projectPath": "/Users/coproperty/Projects/coproperty-office-os",
        "codexPath": "/Users/coproperty/.local/bin/codex",
        "hostFingerprint": "SHA256:UUFmlsdclEmRtyRWNqAdVYUoFxeUkRUGhbzObQPsOPg",
        "requiredChecks": [
          "Verify the hostname, project path, and repository status before any work.",
          "Create an isolated task worktree outside the installed project.",
          "Never modify the installed runtime from this contribution path."
        ]
      }
    }
  }
}
