{
  "schemaVersion": 1,
  "generatedFrom": "src/data/catalogue.js",
  "wiki": {
    "title": "Co.Property internal wiki",
    "version": "2026.10.20.2",
    "date": "20 October 2026"
  },
  "page": {
    "stableId": "services#page",
    "pageId": "services",
    "pageTitle": "Service directory: approved destinations, not shared access",
    "pageSlug": "reference/service-directory",
    "sectionId": "page",
    "sectionTitle": "Service directory: approved destinations, not shared access",
    "sectionProse": [
      "This directory names the approved service destinations used around Co.Property. Every destination requires an existing authorised account or approved auth; the wiki never stores tokens, credentials, or private logs.",
      "Provide a concise, safe index of services and explain which ones are staff views, provider consoles, deployment consoles, private admin surfaces, or authenticated APIs.",
      "Staff and public web surfaces, provider consoles, infrastructure consoles, the authenticated source API, and loopback mini viewer paths have different access and action boundaries.",
      "Find the right service by the work it supports",
      "Project and staff surfaces: GitHub repository, staff PWA, Co.Property website, and Academy. Infrastructure and access consoles: Cloudflare dashboard, Vercel dashboard, and Tailscale admin. Provider and communications consoles: Hospitable, Turno, PriceLabs, LINE manager, and LINE developers console.",
      "The source API is `https://coproperty-office-api.coproperty-office.workers.dev` and requires approved authentication. The directory lists it as a controlled source, not an endpoint to call from this static site.",
      "A reachable sign-in page is not an approval to act",
      "Existing authorised accounts are required for every listed service. An installed CLI, an open browser session, or a familiar dashboard does not prove a teammate is the approved identity for a task. This is especially important for Codex on the mini, provider consoles, and deployment dashboards.",
      "The wiki deliberately avoids tokens, credentials, API probes, and private evidence. If a task needs access, use the owner or admin approval route and record only the safe outcome in the appropriate authorised system.",
      "Keep operational paths useful without publishing private material",
      "The loopback mini viewer can be reached through an approved SSH tunnel at port 8790 for `/admin`, `/planning`, `/health`, `/reports`, and `/tv`. Keep it described as a secured operator path, not a public web service.",
      "Do not add runtime databases, credentials, private logs, internal QA evidence, or an endpoint that executes a contribution request to the wiki. The static site’s role is orientation and safe drafting."
    ],
    "version": "2026.10.20.2",
    "date": "20 October 2026",
    "status": "Checked",
    "currentStatus": "Checked — destinations are documented; an available URL is not proof of access, ownership, freshness, or approval.",
    "proposedStatus": "Keep links current through reviewed documentation changes and never add credentials or private administrative material.",
    "expectedOutcome": "A reader can find the right destination while understanding that access and action still require individual authorisation.",
    "tests": [
      "Check all service links use HTTPS and external destinations open with safe rel attributes.",
      "Check no generated content includes a credential, token, private log, or unapproved API call."
    ],
    "sourcePointers": [
      "docs/OPERATING-ARCHITECTURE.md",
      "docs/COMPANY-SOURCES.md",
      "docs/CONNECTOR-CONTRACTS.md",
      "dashboard/src/lib/api.ts",
      "Handoff / pages/infrastructure.html",
      "Handoff / pages/access.html",
      "Handoff / START-HERE.html"
    ],
    "related": [
      {
        "id": "access",
        "title": "Personal access: choose the least-privileged path",
        "summary": "Most staff should use approved dashboard access. Technical operators use their own Tailscale identity and SSH key to reach the office mini only after owner approval.",
        "status": "Checked",
        "path": "/contribution/access/"
      },
      {
        "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": "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": {
    "directory": {
      "stableId": "services#directory",
      "pageId": "services",
      "pageTitle": "Service directory: approved destinations, not shared access",
      "pageSlug": "reference/service-directory",
      "sectionId": "directory",
      "sectionTitle": "Find the right service by the work it supports",
      "sectionProse": [
        "Project and staff surfaces: GitHub repository, staff PWA, Co.Property website, and Academy. Infrastructure and access consoles: Cloudflare dashboard, Vercel dashboard, and Tailscale admin. Provider and communications consoles: Hospitable, Turno, PriceLabs, LINE manager, and LINE developers console.",
        "The source API is `https://coproperty-office-api.coproperty-office.workers.dev` and requires approved authentication. The directory lists it as a controlled source, not an endpoint to call from this static site."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "Checked",
      "currentStatus": "Checked — links are a navigation aid; every destination still requires existing authorised access.",
      "proposedStatus": "Review link ownership and access wording whenever a service changes.",
      "expectedOutcome": "A reader can identify the relevant authorised surface without treating the wiki as a credential vault.",
      "tests": [
        "Check service URLs exactly match the approved directory and use HTTPS.",
        "Check all external link elements include rel=\"noreferrer\" or equivalent safe handling."
      ],
      "sourcePointers": [
        "docs/OPERATING-ARCHITECTURE.md",
        "docs/COMPANY-SOURCES.md",
        "docs/CONNECTOR-CONTRACTS.md",
        "dashboard/src/lib/api.ts",
        "Handoff / pages/infrastructure.html",
        "Handoff / pages/access.html",
        "Handoff / START-HERE.html"
      ],
      "related": [
        {
          "id": "access",
          "title": "Personal access: choose the least-privileged path",
          "summary": "Most staff should use approved dashboard access. Technical operators use their own Tailscale identity and SSH key to reach the office mini only after owner approval.",
          "status": "Checked",
          "path": "/contribution/access/"
        },
        {
          "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": "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."
        ]
      }
    },
    "access-condition": {
      "stableId": "services#access-condition",
      "pageId": "services",
      "pageTitle": "Service directory: approved destinations, not shared access",
      "pageSlug": "reference/service-directory",
      "sectionId": "access-condition",
      "sectionTitle": "A reachable sign-in page is not an approval to act",
      "sectionProse": [
        "Existing authorised accounts are required for every listed service. An installed CLI, an open browser session, or a familiar dashboard does not prove a teammate is the approved identity for a task. This is especially important for Codex on the mini, provider consoles, and deployment dashboards.",
        "The wiki deliberately avoids tokens, credentials, API probes, and private evidence. If a task needs access, use the owner or admin approval route and record only the safe outcome in the appropriate authorised system."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "Checked",
      "currentStatus": "Checked — the access condition is explicit and no secret material is included.",
      "proposedStatus": "Keep privileged actions outside static documentation and require individual approved authentication.",
      "expectedOutcome": "Links help navigation without leaking access material or implying authority.",
      "tests": [
        "Search static exports for credential-like terms and confirm no values are present.",
        "Check source API text says approved auth is required and makes no unauthenticated request."
      ],
      "sourcePointers": [
        "docs/OPERATING-ARCHITECTURE.md",
        "docs/COMPANY-SOURCES.md",
        "docs/CONNECTOR-CONTRACTS.md",
        "dashboard/src/lib/api.ts",
        "Handoff / pages/infrastructure.html",
        "Handoff / pages/access.html",
        "Handoff / START-HERE.html"
      ],
      "related": [
        {
          "id": "access",
          "title": "Personal access: choose the least-privileged path",
          "summary": "Most staff should use approved dashboard access. Technical operators use their own Tailscale identity and SSH key to reach the office mini only after owner approval.",
          "status": "Checked",
          "path": "/contribution/access/"
        },
        {
          "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": "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."
        ]
      }
    },
    "do-not-publish": {
      "stableId": "services#do-not-publish",
      "pageId": "services",
      "pageTitle": "Service directory: approved destinations, not shared access",
      "pageSlug": "reference/service-directory",
      "sectionId": "do-not-publish",
      "sectionTitle": "Keep operational paths useful without publishing private material",
      "sectionProse": [
        "The loopback mini viewer can be reached through an approved SSH tunnel at port 8790 for `/admin`, `/planning`, `/health`, `/reports`, and `/tv`. Keep it described as a secured operator path, not a public web service.",
        "Do not add runtime databases, credentials, private logs, internal QA evidence, or an endpoint that executes a contribution request to the wiki. The static site’s role is orientation and safe drafting."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "Checked",
      "currentStatus": "Checked — the directory is intentionally bounded to safe links and explanations.",
      "proposedStatus": "Reject documentation additions that would turn the wiki into a credential, runtime, or execution surface.",
      "expectedOutcome": "The shareable static wiki remains useful without expanding the exposure of internal systems.",
      "tests": [
        "Check generated files contain no API client, execution endpoint, or runtime database artifact.",
        "Check mini viewer paths are paired with the SSH-tunnel requirement."
      ],
      "sourcePointers": [
        "docs/OPERATING-ARCHITECTURE.md",
        "docs/COMPANY-SOURCES.md",
        "docs/CONNECTOR-CONTRACTS.md",
        "dashboard/src/lib/api.ts",
        "Handoff / pages/infrastructure.html",
        "Handoff / pages/access.html",
        "Handoff / START-HERE.html"
      ],
      "related": [
        {
          "id": "access",
          "title": "Personal access: choose the least-privileged path",
          "summary": "Most staff should use approved dashboard access. Technical operators use their own Tailscale identity and SSH key to reach the office mini only after owner approval.",
          "status": "Checked",
          "path": "/contribution/access/"
        },
        {
          "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": "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."
        ]
      }
    }
  }
}
