Bounds Schema

FieldTypeRequiredDescription
profilestringYes-
read_accessstringYesAllow the agent to read tickets, approvals, mandates and the records in connected systems, to build a report
read_max_age_daysnumberYesHow far back the agent may read evidence for a report: tickets, approvals, mandates and records from the last N days, at most 366. Anything older is invisible to the agent and cannot enter a report or an export. Enforced locally by the gateway (reads carry no ticket); signed here so the window the owner approved is part of the mandate.
report_daily_maxnumberYesMaximum times per day the agent may write or replace the report

Key order: profile, read_access, read_max_age_days, report_daily_max

Full Definition

{
  "id": "github.com/humanagencyprotocol/hap-profiles/reporting@0.2",
  "name": "Reporting",
  "version": "0.2",
  "description": "Reporting authority — lets an agent read the evidence a gateway holds (tickets, approvals, mandates, records in the systems it connects) and write one report stored on that machine. Changes no system.",
  "whatsNew": "Adds a reporting window: the agent only sees, opens and exports evidence from the last N days (read_max_age_days). Anything older is invisible to it and cannot enter a report or an export.",
  "boundsSchema": {
    "actionTypes": [
      "report"
    ],
    "keyOrder": [
      "profile",
      "read_access",
      "read_max_age_days",
      "report_daily_max"
    ],
    "fields": {
      "profile": {
        "type": "string",
        "required": true
      },
      "read_access": {
        "type": "string",
        "required": true,
        "displayName": "Read evidence",
        "description": "Allow the agent to read tickets, approvals, mandates and the records in connected systems, to build a report",
        "boundType": {
          "kind": "enum",
          "values": [
            "unlimited",
            "none"
          ]
        },
        "toolsDescription": "tickets, approvals, mandates, system records",
        "default": "unlimited"
      },
      "read_max_age_days": {
        "type": "number",
        "required": true,
        "displayName": "Reporting window (days)",
        "description": "How far back the agent may read evidence for a report: tickets, approvals, mandates and records from the last N days, at most 366. Anything older is invisible to the agent and cannot enter a report or an export. Enforced locally by the gateway (reads carry no ticket); signed here so the window the owner approved is part of the mandate.",
        "unit": "days",
        "boundType": {
          "kind": "per_transaction",
          "of": "read_age_days"
        },
        "maximum": 366,
        "default": 30
      },
      "report_daily_max": {
        "type": "number",
        "required": true,
        "displayName": "Report updates per day",
        "description": "Maximum times per day the agent may write or replace the report",
        "unit": "count",
        "boundType": {
          "kind": "cumulative_count",
          "window": "daily"
        },
        "appliesTo": [
          "report"
        ]
      }
    }
  },
  "executionContextSchema": {
    "fields": {
      "report_count_daily": {
        "source": "cumulative",
        "cumulativeField": "_count",
        "window": "daily",
        "description": "Running daily count of report writes",
        "required": true,
        "constraint": {
          "type": "number",
          "enforceable": [
            "max"
          ]
        }
      }
    }
  },
  "requiredGates": [
    "bounds",
    "intent",
    "commitment",
    "decision_owner"
  ],
  "ttl": {
    "default": 86400,
    "max": 2592000
  },
  "retention_minimum": 7776000,
  "content_binding": {
    "version": "1",
    "kind": "jcs"
  }
}