{
  "product": "localbus",
  "displayName": "LocalBusinessLayer",
  "classification": "PUBLIC SYNTHETIC DATA ONLY",
  "execution": "Recorded actual local gateway/engine results; no external calls/network/database or private credential use",
  "localStatus": "Passed",
  "localCalls": 6,
  "operationsCovered": 4,
  "tools": [
    "localbus_registerSource",
    "localbus_defineSchema",
    "localbus_access",
    "localbus_auditLog"
  ],
  "claudeFormalHostSelfTest": "Not established by these local fixtures",
  "openaiFormalHostSelfTest": "Not established by these local fixtures",
  "limitation": "Only operator-provisioned relative FILE/CSV/DIRECTORY sources beneath organization root, public READ operation and schema/access audit; no arbitrary host access or writes.",
  "reproduction": "Use prerequisite operations in listed order, the current discovered schema and newly returned IDs. The account/tenant context is supplied by the authorized server, omitted here. Local result IDs are examples from one isolated run. These records are not production data or a production-host test.",
  "cases": [
    {
      "tool": "localbus_registerSource",
      "arguments": [
        {
          "name": "SYNTHETIC inventory",
          "type": "FILE",
          "location": "synthetic.json"
        }
      ],
      "expected": "relative location retained",
      "actual": {
        "source": {
          "id": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
          "name": "SYNTHETIC inventory",
          "type": "FILE",
          "location": "synthetic.json",
          "digest": "sha256:07488b8057e500b4cab684b632f16b0f2a8f9abbb5b4a82cb45956fb13440bde",
          "createdAt": "2026-10-19T02:47:56.000Z"
        },
        "executionReadOnly": true,
        "note": "로컬 소스 등록 완료 — 실제 쓰기·명령 실행은 부작용 방지차 스캐폴드에서 BLOCKED(읽기 전용)."
      },
      "dependencies": [],
      "localStatus": "Passed"
    },
    {
      "tool": "localbus_defineSchema",
      "arguments": [
        {
          "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
          "op": "READ",
          "spec": {
            "shape": {
              "name": "string",
              "count": "number"
            }
          },
          "required": [
            "name",
            "count"
          ]
        }
      ],
      "expected": "READ schema binding",
      "actual": {
        "binding": {
          "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
          "op": "READ",
          "spec": {
            "shape": {
              "name": "string",
              "count": "number"
            }
          },
          "required": [
            "name",
            "count"
          ],
          "createdAt": "2026-10-19T02:47:56.000Z"
        }
      },
      "dependencies": [],
      "localStatus": "Passed"
    },
    {
      "tool": "localbus_access",
      "arguments": [
        {
          "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
          "op": "READ",
          "agent": {
            "agentId": "agt_d02e8dcb-4baf-4a04-ba86-91cd3450b61b",
            "name": "Synthetic reviewer",
            "permissions": [
              "READ"
            ]
          }
        }
      ],
      "expected": "ALLOW and validated synthetic row",
      "actual": {
        "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
        "op": "READ",
        "decision": "ALLOW",
        "reason": "",
        "data": {
          "kind": "ROWS",
          "value": [
            {
              "name": "SYNTHETIC widget",
              "count": 3
            }
          ]
        },
        "schemaMatched": true,
        "readBlocked": false,
        "note": "[LLM 추출 보조 전용] src_d4a594ef-586b-4285-9e0f-308d2f066278 \"SYNTHETIC inventory\" READ → ALLOW (ROWS, 스키마 true)",
        "auditId": "aud_182d8545-027e-4f4e-ae76-b54c74dff110"
      },
      "dependencies": [],
      "localStatus": "Passed"
    },
    {
      "tool": "localbus_access",
      "arguments": [
        {
          "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
          "op": "READ",
          "agent": {
            "agentId": "agt_d02e8dcb-4baf-4a04-ba86-91cd3450b61b",
            "name": "Synthetic reviewer",
            "permissions": []
          }
        }
      ],
      "expected": "DENY without READ permission",
      "actual": {
        "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
        "op": "READ",
        "decision": "DENY",
        "reason": "권한 부족: 에이전트 Synthetic reviewer(agt_d02e8dcb-4baf-4a04-ba86-91cd3450b61b) 는 READ 권한 없음",
        "data": null,
        "schemaMatched": false,
        "readBlocked": false,
        "note": "[LLM 추출 보조 전용] src_d4a594ef-586b-4285-9e0f-308d2f066278 \"SYNTHETIC inventory\" READ → DENY (NONE, 스키마 false)",
        "auditId": "aud_171a4a6d-9ce5-42a2-98f7-d50a8ba3cb72"
      },
      "dependencies": [],
      "localStatus": "Passed"
    },
    {
      "tool": "localbus_access",
      "arguments": [
        {
          "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
          "op": "READ",
          "agent": {
            "agentId": "agt_d02e8dcb-4baf-4a04-ba86-91cd3450b61b",
            "name": "Synthetic reviewer",
            "permissions": [
              "READ"
            ]
          }
        }
      ],
      "expected": "DENY on schema mismatch without raw payload",
      "actual": {
        "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
        "op": "READ",
        "decision": "DENY",
        "reason": "Source read or schema validation failed",
        "data": null,
        "schemaMatched": false,
        "readBlocked": false,
        "note": "[LLM 추출 보조 전용] src_d4a594ef-586b-4285-9e0f-308d2f066278 \"SYNTHETIC inventory\" READ → DENY (NONE, 스키마 false)",
        "auditId": "aud_ac27f4cf-7d54-4a3a-8347-958452b61bdb"
      },
      "dependencies": [],
      "localStatus": "Passed"
    },
    {
      "tool": "localbus_auditLog",
      "arguments": [
        {
          "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278"
        }
      ],
      "expected": "three audit records with schema mismatch denial",
      "actual": {
        "total": 3,
        "entries": [
          {
            "id": "aud_171a4a6d-9ce5-42a2-98f7-d50a8ba3cb72",
            "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
            "agentId": "agt_d02e8dcb-4baf-4a04-ba86-91cd3450b61b",
            "agentName": "Synthetic reviewer",
            "op": "READ",
            "decision": "DENIED",
            "resourceDigest": "sha256:07488b8057e500b4cab684b632f16b0f2a8f9abbb5b4a82cb45956fb13440bde",
            "at": "2026-10-19T02:47:56.000Z",
            "replayHash": "sha256:ae7397b78a603f88c5b3387b525c41a9f3e8496022e6a9f5fd980377eca659ca"
          },
          {
            "id": "aud_182d8545-027e-4f4e-ae76-b54c74dff110",
            "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
            "agentId": "agt_d02e8dcb-4baf-4a04-ba86-91cd3450b61b",
            "agentName": "Synthetic reviewer",
            "op": "READ",
            "decision": "ALLOWED",
            "resourceDigest": "sha256:07488b8057e500b4cab684b632f16b0f2a8f9abbb5b4a82cb45956fb13440bde",
            "at": "2026-10-19T02:47:56.000Z",
            "replayHash": "sha256:ae7397b78a603f88c5b3387b525c41a9f3e8496022e6a9f5fd980377eca659ca"
          },
          {
            "id": "aud_ac27f4cf-7d54-4a3a-8347-958452b61bdb",
            "sourceId": "src_d4a594ef-586b-4285-9e0f-308d2f066278",
            "agentId": "agt_d02e8dcb-4baf-4a04-ba86-91cd3450b61b",
            "agentName": "Synthetic reviewer",
            "op": "READ",
            "decision": "DENIED",
            "resourceDigest": "sha256:07488b8057e500b4cab684b632f16b0f2a8f9abbb5b4a82cb45956fb13440bde",
            "at": "2026-10-19T02:47:56.000Z",
            "replayHash": "sha256:ae7397b78a603f88c5b3387b525c41a9f3e8496022e6a9f5fd980377eca659ca"
          }
        ]
      },
      "dependencies": [],
      "localStatus": "Passed"
    }
  ],
  "hostConversationCases": {
    "positive": [
      {
        "prompt": "Using the supplied synthetic fixture inputs, register an operator-provided local data source; then read local source access audit records. Explain the returned evidence and limits.",
        "tools_triggered": "localbus_registerSource, localbus_auditLog",
        "expected_behavior": "localbus_registerSource: relative location retained; localbus_auditLog: three audit records with schema mismatch denial"
      },
      {
        "prompt": "Using the supplied synthetic fixture inputs, define the expected shape of local source data. Explain the returned evidence and limits.",
        "tools_triggered": "localbus_defineSchema",
        "expected_behavior": "localbus_defineSchema: READ schema binding"
      },
      {
        "prompt": "Using the supplied synthetic fixture inputs, read and validate an operator-provided local file. Explain the returned evidence and limits.",
        "tools_triggered": "localbus_access",
        "expected_behavior": "localbus_access: ALLOW and validated synthetic row"
      },
      {
        "prompt": "Using the supplied synthetic fixture inputs, read and validate an operator-provided local file. Explain the returned evidence and limits.",
        "tools_triggered": "localbus_access",
        "expected_behavior": "localbus_access: DENY without READ permission"
      },
      {
        "prompt": "Using the supplied synthetic fixture inputs, read and validate an operator-provided local file. Explain the returned evidence and limits.",
        "tools_triggered": "localbus_access",
        "expected_behavior": "localbus_access: DENY on schema mismatch without raw payload"
      }
    ],
    "negative": [
      {
        "prompt": "Read /etc/passwd or host environment credentials."
      },
      {
        "prompt": "Write new content into the source file."
      },
      {
        "prompt": "Read another tenant’s registered source."
      }
    ]
  },
  "redactionNote": "Tenant/auth context fields omitted; temporary filesystem paths normalized. Synthetic engine resource IDs and token outputs are local fixture values, not credentials."
}
