{
  "schemaVersion": 1,
  "generatedFrom": "src/data/catalogue.js",
  "wiki": {
    "title": "Co.Property internal wiki",
    "version": "2026.10.20.2",
    "date": "20 October 2026"
  },
  "page": {
    "stableId": "dashboard-tv#page",
    "pageId": "dashboard-tv",
    "pageTitle": "Dashboard and passive TV: shared views, not source authority",
    "pageSlug": "systems/dashboard-and-tv",
    "sectionId": "page",
    "sectionTitle": "Dashboard and passive TV: shared views, not source authority",
    "sectionProse": [
      "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.",
      "Help a reader use operational screens responsibly by distinguishing a helpful display from the source record, freshness evidence, and accepted decision behind it.",
      "Provider and company data are written and prepared by the mini. Cloud distribution provides protected projections to the staff dashboard and passive TV, where viewers use the display to locate evidence rather than write it.",
      "The staff dashboard is the usual entry point",
      "Staff who need company information should ask for approved dashboard access first. The dashboard is designed to provide shared views without making every teammate an infrastructure operator or giving them SSH access to the office mini.",
      "Use an operational overview to find today’s arrivals, departures, turnovers, and exceptions. Then follow the appropriate record and responsible person. A visible green or completed label is a clue to inspect the evidence, not permission to skip it.",
      "Passive TV is for awareness, not unattended authority",
      "A passive TV view can help a shared space notice the operating day without turning the screen into a control room. It should consume a projection and retain the same caution about dated observations, source freshness, and accepted decisions.",
      "Do not infer that a passive display can change company state, contact a provider, or confirm a readiness result. Those actions remain with the authorised record and operating process.",
      "Confidence comes from source freshness and evidence, not screen activity",
      "The handoff defines freshness as a complete read of the relevant source window followed by a successful publication. A dashboard opening, refreshing, or repainting only proves that a screen changed; it does not prove the provider information is current.",
      "For a turnover, a cleaning job marked completed is not automatically a verified property-ready decision. The screen should direct the reader to observation time, evidence label, and responsible review."
    ],
    "version": "2026.10.20.2",
    "date": "20 October 2026",
    "status": "Checked",
    "currentStatus": "Checked — the handoff documents dashboard and TV as staff-facing views; current screen values remain dated examples.",
    "proposedStatus": "Show freshness and evidence labels near high-consequence projections, and verify the source before acting on an exception.",
    "expectedOutcome": "A teammate can use the display to find the right record without treating a repaint as proof of current or accepted data.",
    "tests": [
      "Check browser and mobile layouts preserve the table, diagram text equivalent, and no-JS navigation.",
      "Check a screen value is never described as proof of freshness or readiness by itself."
    ],
    "sourcePointers": [
      "dashboard/src/pages/ops.tsx",
      "dashboard/src/pages/ops/sections.tsx",
      "dashboard/worker.ts",
      "coprop_kb/wallboard.py",
      "coprop_kb/wallboard_viewer.py",
      "tests/test_workspace_ui.cjs",
      "tests/test_wallboard.py",
      "tests/test_wallboard_viewer.py",
      "Handoff / pages/infrastructure.html",
      "Handoff / pages/app-tour.html",
      "Handoff / START-HERE.html"
    ],
    "related": [
      {
        "id": "data-replicas",
        "title": "Provider → data → replica: one writer, protected projections",
        "summary": "Providers remain authoritative for their own transactions. The main mini writes internal company state; Cloudflare protected replicas and the Vercel staff PWA consume projections rather than replacing the master record.",
        "status": "Checked",
        "path": "/systems/data-replicas/"
      },
      {
        "id": "turnover",
        "title": "Turnover readiness: evidence before a ready decision",
        "summary": "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.",
        "status": "In progress",
        "path": "/workflows/turnover-evidence/"
      },
      {
        "id": "screenshots",
        "title": "Screenshots tour: dated examples, safer next questions",
        "summary": "These sanitized screenshots are a visual orientation to the installed app captured on 20 October 2026. They are not mockups, credentials, or current operational proof.",
        "status": "Checked",
        "path": "/reference/screenshots-tour/"
      }
    ],
    "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": {
    "staff-dashboard": {
      "stableId": "dashboard-tv#staff-dashboard",
      "pageId": "dashboard-tv",
      "pageTitle": "Dashboard and passive TV: shared views, not source authority",
      "pageSlug": "systems/dashboard-and-tv",
      "sectionId": "staff-dashboard",
      "sectionTitle": "The staff dashboard is the usual entry point",
      "sectionProse": [
        "Staff who need company information should ask for approved dashboard access first. The dashboard is designed to provide shared views without making every teammate an infrastructure operator or giving them SSH access to the office mini.",
        "Use an operational overview to find today’s arrivals, departures, turnovers, and exceptions. Then follow the appropriate record and responsible person. A visible green or completed label is a clue to inspect the evidence, not permission to skip it."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "Checked",
      "currentStatus": "Checked — the role of the staff view is documented; live availability and values require approved access and current verification.",
      "proposedStatus": "Keep write and approval controls tied to explicit role and record boundaries.",
      "expectedOutcome": "Routine staff work begins on the least-privileged surface that can answer the question.",
      "tests": [
        "Run browser and mobile checks for any dashboard UI change.",
        "Verify keyboard users can reach search, navigation, page contents, and contextual work controls."
      ],
      "sourcePointers": [
        "dashboard/src/pages/ops.tsx",
        "dashboard/src/pages/ops/sections.tsx",
        "dashboard/worker.ts",
        "tests/test_workspace_ui.cjs",
        "Handoff / pages/infrastructure.html",
        "Handoff / pages/app-tour.html",
        "Handoff / START-HERE.html"
      ],
      "related": [
        {
          "id": "data-replicas",
          "title": "Provider → data → replica: one writer, protected projections",
          "summary": "Providers remain authoritative for their own transactions. The main mini writes internal company state; Cloudflare protected replicas and the Vercel staff PWA consume projections rather than replacing the master record.",
          "status": "Checked",
          "path": "/systems/data-replicas/"
        },
        {
          "id": "turnover",
          "title": "Turnover readiness: evidence before a ready decision",
          "summary": "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.",
          "status": "In progress",
          "path": "/workflows/turnover-evidence/"
        },
        {
          "id": "screenshots",
          "title": "Screenshots tour: dated examples, safer next questions",
          "summary": "These sanitized screenshots are a visual orientation to the installed app captured on 20 October 2026. They are not mockups, credentials, or current operational proof.",
          "status": "Checked",
          "path": "/reference/screenshots-tour/"
        }
      ],
      "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."
        ]
      }
    },
    "passive-tv": {
      "stableId": "dashboard-tv#passive-tv",
      "pageId": "dashboard-tv",
      "pageTitle": "Dashboard and passive TV: shared views, not source authority",
      "pageSlug": "systems/dashboard-and-tv",
      "sectionId": "passive-tv",
      "sectionTitle": "Passive TV is for awareness, not unattended authority",
      "sectionProse": [
        "A passive TV view can help a shared space notice the operating day without turning the screen into a control room. It should consume a projection and retain the same caution about dated observations, source freshness, and accepted decisions.",
        "Do not infer that a passive display can change company state, contact a provider, or confirm a readiness result. Those actions remain with the authorised record and operating process."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "Checked",
      "currentStatus": "Checked — passive TV is described as a consuming view in the documented system shape.",
      "proposedStatus": "Keep display-only behavior explicit and test readability at the intended viewing distance.",
      "expectedOutcome": "Shared awareness improves without blurring write or approval authority.",
      "tests": [
        "Check passive-TV content has no assumed write action.",
        "Check text equivalents remain available for every visual diagram."
      ],
      "sourcePointers": [
        "docs/WALLBOARD.md",
        "docs/MAIN-TV.md",
        "coprop_kb/wallboard.py",
        "coprop_kb/wallboard_viewer.py",
        "tests/test_wallboard.py",
        "tests/test_wallboard_viewer.py",
        "Handoff / pages/infrastructure.html",
        "Handoff / pages/app-tour.html",
        "Handoff / START-HERE.html"
      ],
      "related": [
        {
          "id": "data-replicas",
          "title": "Provider → data → replica: one writer, protected projections",
          "summary": "Providers remain authoritative for their own transactions. The main mini writes internal company state; Cloudflare protected replicas and the Vercel staff PWA consume projections rather than replacing the master record.",
          "status": "Checked",
          "path": "/systems/data-replicas/"
        },
        {
          "id": "turnover",
          "title": "Turnover readiness: evidence before a ready decision",
          "summary": "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.",
          "status": "In progress",
          "path": "/workflows/turnover-evidence/"
        },
        {
          "id": "screenshots",
          "title": "Screenshots tour: dated examples, safer next questions",
          "summary": "These sanitized screenshots are a visual orientation to the installed app captured on 20 October 2026. They are not mockups, credentials, or current operational proof.",
          "status": "Checked",
          "path": "/reference/screenshots-tour/"
        }
      ],
      "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."
        ]
      }
    },
    "screen-confidence": {
      "stableId": "dashboard-tv#screen-confidence",
      "pageId": "dashboard-tv",
      "pageTitle": "Dashboard and passive TV: shared views, not source authority",
      "pageSlug": "systems/dashboard-and-tv",
      "sectionId": "screen-confidence",
      "sectionTitle": "Confidence comes from source freshness and evidence, not screen activity",
      "sectionProse": [
        "The handoff defines freshness as a complete read of the relevant source window followed by a successful publication. A dashboard opening, refreshing, or repainting only proves that a screen changed; it does not prove the provider information is current.",
        "For a turnover, a cleaning job marked completed is not automatically a verified property-ready decision. The screen should direct the reader to observation time, evidence label, and responsible review."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "In progress",
      "currentStatus": "In progress — current provider freshness must be verified live; the wiki does not claim it is current.",
      "proposedStatus": "Exercise stale, incomplete, and successful source cases and make their different display states clear.",
      "expectedOutcome": "Users can ask the source and evidence questions before acting on a dashboard status.",
      "tests": [
        "Use freshness fixtures for complete, stale, and failed source publications.",
        "Use a completed-cleaning fixture with missing verification and assert it is not ready."
      ],
      "sourcePointers": [
        "dashboard/src/pages/ops.tsx",
        "dashboard/src/pages/ops/sections.tsx",
        "dashboard/worker.ts",
        "coprop_kb/wallboard.py",
        "coprop_kb/wallboard_viewer.py",
        "tests/test_workspace_ui.cjs",
        "tests/test_wallboard.py",
        "tests/test_wallboard_viewer.py",
        "Handoff / pages/infrastructure.html",
        "Handoff / pages/app-tour.html",
        "Handoff / START-HERE.html"
      ],
      "related": [
        {
          "id": "data-replicas",
          "title": "Provider → data → replica: one writer, protected projections",
          "summary": "Providers remain authoritative for their own transactions. The main mini writes internal company state; Cloudflare protected replicas and the Vercel staff PWA consume projections rather than replacing the master record.",
          "status": "Checked",
          "path": "/systems/data-replicas/"
        },
        {
          "id": "turnover",
          "title": "Turnover readiness: evidence before a ready decision",
          "summary": "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.",
          "status": "In progress",
          "path": "/workflows/turnover-evidence/"
        },
        {
          "id": "screenshots",
          "title": "Screenshots tour: dated examples, safer next questions",
          "summary": "These sanitized screenshots are a visual orientation to the installed app captured on 20 October 2026. They are not mockups, credentials, or current operational proof.",
          "status": "Checked",
          "path": "/reference/screenshots-tour/"
        }
      ],
      "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."
        ]
      }
    }
  }
}
