{
  "schemaVersion": 1,
  "generatedFrom": "src/data/catalogue.js",
  "wiki": {
    "title": "Co.Property internal wiki",
    "version": "2026.10.20.2",
    "date": "20 October 2026"
  },
  "page": {
    "stableId": "hermes#page",
    "pageId": "hermes",
    "pageTitle": "Hermes: an adapter boundary, not a company identity",
    "pageSlug": "systems/hermes",
    "sectionId": "page",
    "sectionTitle": "Hermes: an adapter boundary, not a company identity",
    "sectionProse": [
      "Hermes is an adapter in the operating architecture. It does not replace the company Official Account, employee operations bot, provider authority, or a reviewed record boundary.",
      "Make it clear what Hermes may connect and what it must not be assumed to authorise or complete.",
      "An approved source record reaches Hermes, which proposes or carries a defined mapping to a reviewed company record. The responsible identity and reviewer determine any accepted outcome.",
      "An adapter does not inherit the identity on either side",
      "Hermes can be useful for connecting defined inputs and outputs, but it is not automatically the company Official Account, the employee operations bot, a provider, or an authorised reviewer. Those identities and responsibilities remain distinct even when an integration makes a flow appear seamless.",
      "This boundary protects both operations and communications. It stops a technically reachable route from being mistaken for permission to act, send, accept, or change a source record.",
      "A mapping needs source, destination, failure behavior, and a reviewer",
      "Describe an adapter mapping in terms of its approved input record, output record, identity boundary, duplicate behavior, failure behavior, freshness expectation, and reviewer. That description is more useful than an implementation detail alone because it remains valid if the transport changes.",
      "Where the mapping affects property, task, or message context, preserve confirmed identity rather than relying on a display-name heuristic.",
      "Connectivity is not an accepted business outcome",
      "A connection can be technically present while the business outcome is still unaccepted. The current information does not confirm final Hermes ownership or LINE end-to-end acceptance. Use the honest status: pending.",
      "A future accepted case needs an authorised identity, a confirmed record, a defined result, evidence that the flow behaved correctly, and an exception path. This wiki prepares that conversation; it does not run it."
    ],
    "version": "2026.10.20.2",
    "date": "20 October 2026",
    "status": "In progress",
    "currentStatus": "In progress — Hermes-related final ownership and end-to-end LINE acceptance are not confirmed.",
    "proposedStatus": "Verify the intended identity, approved input/output record, failure handling, and owner before accepting a live adapter flow.",
    "expectedOutcome": "A technical or operational reviewer can separate adapter connectivity from authority, identity, and accepted outcomes.",
    "tests": [
      "Check Hermes appears as a separate node in system and LINE diagrams.",
      "Check adapter work includes duplicate, failure, identity, and freshness fixtures where applicable."
    ],
    "sourcePointers": [
      "docs/HERMES-RUNNER.md",
      "docs/HERMES-COFOUNDER-HELPER.md",
      "ops/hermes/coprop_jobs.py",
      "ops/hermes/prepare.py",
      "ops/hermes/test_jobs.py",
      "ops/hermes/test_runner.py",
      "Handoff / pages/infrastructure.html",
      "Handoff / START-HERE.html",
      "Handoff / pages/workflows.html"
    ],
    "related": [
      {
        "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/"
      },
      {
        "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": "workspace-pr",
        "title": "Contribution: isolated workspaces, meaningful tests, reviewed release",
        "summary": "A safe change begins by verifying the remote target, then uses an isolated worktree outside the installed project. It is tested, submitted as a pull request, and reviewed before a person releases it.",
        "status": "Checked",
        "path": "/contribution/workspace-and-pr/"
      }
    ],
    "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": {
    "identity-boundary": {
      "stableId": "hermes#identity-boundary",
      "pageId": "hermes",
      "pageTitle": "Hermes: an adapter boundary, not a company identity",
      "pageSlug": "systems/hermes",
      "sectionId": "identity-boundary",
      "sectionTitle": "An adapter does not inherit the identity on either side",
      "sectionProse": [
        "Hermes can be useful for connecting defined inputs and outputs, but it is not automatically the company Official Account, the employee operations bot, a provider, or an authorised reviewer. Those identities and responsibilities remain distinct even when an integration makes a flow appear seamless.",
        "This boundary protects both operations and communications. It stops a technically reachable route from being mistaken for permission to act, send, accept, or change a source record."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "In progress",
      "currentStatus": "In progress — final identity ownership and end-to-end acceptance are not confirmed.",
      "proposedStatus": "Capture the named approved identity and reviewer for every live adapter flow before release.",
      "expectedOutcome": "The adapter has a constrained, reviewable role instead of implicit authority.",
      "tests": [
        "Check adapter prompt context repeats the identity boundary and no-execution rule.",
        "Check no wording conflates Hermes with the company Official Account."
      ],
      "sourcePointers": [
        "docs/HERMES-RUNNER.md",
        "docs/HERMES-COFOUNDER-HELPER.md",
        "ops/hermes/coprop_jobs.py",
        "ops/hermes/prepare.py",
        "ops/hermes/test_jobs.py",
        "ops/hermes/test_runner.py",
        "Handoff / pages/infrastructure.html",
        "Handoff / START-HERE.html",
        "Handoff / pages/workflows.html"
      ],
      "related": [
        {
          "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/"
        },
        {
          "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": "workspace-pr",
          "title": "Contribution: isolated workspaces, meaningful tests, reviewed release",
          "summary": "A safe change begins by verifying the remote target, then uses an isolated worktree outside the installed project. It is tested, submitted as a pull request, and reviewed before a person releases it.",
          "status": "Checked",
          "path": "/contribution/workspace-and-pr/"
        }
      ],
      "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."
        ]
      }
    },
    "mapping-boundary": {
      "stableId": "hermes#mapping-boundary",
      "pageId": "hermes",
      "pageTitle": "Hermes: an adapter boundary, not a company identity",
      "pageSlug": "systems/hermes",
      "sectionId": "mapping-boundary",
      "sectionTitle": "A mapping needs source, destination, failure behavior, and a reviewer",
      "sectionProse": [
        "Describe an adapter mapping in terms of its approved input record, output record, identity boundary, duplicate behavior, failure behavior, freshness expectation, and reviewer. That description is more useful than an implementation detail alone because it remains valid if the transport changes.",
        "Where the mapping affects property, task, or message context, preserve confirmed identity rather than relying on a display-name heuristic."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "Checked",
      "currentStatus": "Checked — this is a safe contribution standard derived from the source and system boundaries.",
      "proposedStatus": "Add targeted fixtures and a review owner before a mapping enters a PR.",
      "expectedOutcome": "An integration proposal can be tested for the cases most likely to create misleading operational state.",
      "tests": [
        "Run duplicate, missing-source, failure, freshness, and identity-mismatch fixtures.",
        "Check the generated context scope is one selected mapping section plus direct related summaries."
      ],
      "sourcePointers": [
        "docs/HERMES-RUNNER.md",
        "docs/HERMES-COFOUNDER-HELPER.md",
        "ops/hermes/coprop_jobs.py",
        "ops/hermes/prepare.py",
        "ops/hermes/test_jobs.py",
        "ops/hermes/test_runner.py",
        "Handoff / pages/infrastructure.html",
        "Handoff / START-HERE.html",
        "Handoff / pages/workflows.html"
      ],
      "related": [
        {
          "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/"
        },
        {
          "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": "workspace-pr",
          "title": "Contribution: isolated workspaces, meaningful tests, reviewed release",
          "summary": "A safe change begins by verifying the remote target, then uses an isolated worktree outside the installed project. It is tested, submitted as a pull request, and reviewed before a person releases it.",
          "status": "Checked",
          "path": "/contribution/workspace-and-pr/"
        }
      ],
      "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."
        ]
      }
    },
    "acceptance": {
      "stableId": "hermes#acceptance",
      "pageId": "hermes",
      "pageTitle": "Hermes: an adapter boundary, not a company identity",
      "pageSlug": "systems/hermes",
      "sectionId": "acceptance",
      "sectionTitle": "Connectivity is not an accepted business outcome",
      "sectionProse": [
        "A connection can be technically present while the business outcome is still unaccepted. The current information does not confirm final Hermes ownership or LINE end-to-end acceptance. Use the honest status: pending.",
        "A future accepted case needs an authorised identity, a confirmed record, a defined result, evidence that the flow behaved correctly, and an exception path. This wiki prepares that conversation; it does not run it."
      ],
      "version": "2026.10.20.2",
      "date": "20 October 2026",
      "status": "In progress",
      "currentStatus": "In progress — no final operational acceptance is asserted.",
      "proposedStatus": "Close the item only after an owner verifies an approved real case and retains the evidence in the appropriate authorised record.",
      "expectedOutcome": "Technical success and business acceptance remain separately visible.",
      "tests": [
        "Check all published content retains “pending” for LINE/Hermes acceptance.",
        "Check Open Codex draft performs no action and long prompts have copy/download fallback."
      ],
      "sourcePointers": [
        "docs/HERMES-RUNNER.md",
        "docs/HERMES-COFOUNDER-HELPER.md",
        "ops/hermes/coprop_jobs.py",
        "ops/hermes/prepare.py",
        "ops/hermes/test_jobs.py",
        "ops/hermes/test_runner.py",
        "Handoff / pages/infrastructure.html",
        "Handoff / START-HERE.html",
        "Handoff / pages/workflows.html"
      ],
      "related": [
        {
          "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/"
        },
        {
          "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": "workspace-pr",
          "title": "Contribution: isolated workspaces, meaningful tests, reviewed release",
          "summary": "A safe change begins by verifying the remote target, then uses an isolated worktree outside the installed project. It is tested, submitted as a pull request, and reviewed before a person releases it.",
          "status": "Checked",
          "path": "/contribution/workspace-and-pr/"
        }
      ],
      "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."
        ]
      }
    }
  }
}
