Bounds Schema

FieldTypeRequiredDescription
profilestringYes-
post_daily_maxnumberYesMaximum posts published per day
post_monthly_maxnumberYesMaximum posts published per month

Key order: profile, post_daily_max, post_monthly_max

Context Schema (local only)

FieldTypeRequiredDescription
allowed_platformsstringYesAuthorized publishing platforms
content_typestringYesAuthorized content formats
audiencestringYesAuthorized audience visibility

Key order: allowed_platforms, content_type, audience

Full Definition

{
  "id": "github.com/humanagencyprotocol/hap-profiles/publish@0.4",
  "name": "Content Publishing",
  "version": "0.4",
  "description": "Publishing authority — governs posting public content to social media, blogs, and other platforms",
  "boundsSchema": {
    "keyOrder": [
      "profile",
      "post_daily_max",
      "post_monthly_max"
    ],
    "fields": {
      "profile": {
        "type": "string",
        "required": true
      },
      "post_daily_max": {
        "type": "number",
        "required": true,
        "displayName": "Daily post limit",
        "description": "Maximum posts published per day",
        "unit": "count",
        "boundType": {
          "kind": "cumulative_count",
          "window": "daily"
        }
      },
      "post_monthly_max": {
        "type": "number",
        "required": true,
        "displayName": "Monthly post limit",
        "description": "Maximum posts published per month",
        "unit": "count",
        "boundType": {
          "kind": "cumulative_count",
          "window": "monthly"
        }
      }
    }
  },
  "contextSchema": {
    "keyOrder": [
      "allowed_platforms",
      "content_type",
      "audience"
    ],
    "fields": {
      "allowed_platforms": {
        "type": "string",
        "required": true,
        "displayName": "Platforms",
        "description": "Authorized publishing platforms",
        "enum": [
          "linkedin"
        ],
        "constraint": {
          "type": "string",
          "enforceable": [
            "subset"
          ]
        }
      },
      "content_type": {
        "type": "string",
        "required": true,
        "displayName": "Content types",
        "description": "Authorized content formats",
        "enum": [
          "text",
          "image",
          "article"
        ],
        "constraint": {
          "type": "string",
          "enforceable": [
            "subset"
          ]
        }
      },
      "audience": {
        "type": "string",
        "required": true,
        "displayName": "Audience",
        "description": "Authorized audience visibility",
        "enum": [
          "public",
          "connections"
        ],
        "constraint": {
          "type": "string",
          "enforceable": [
            "subset"
          ]
        }
      }
    }
  },
  "executionContextSchema": {
    "fields": {
      "allowed_platforms": {
        "source": "declared",
        "description": "Platform being published to (checked against authorized platforms)",
        "required": true,
        "constraint": {
          "type": "string",
          "enforceable": [
            "subset"
          ]
        }
      },
      "content_type": {
        "source": "declared",
        "description": "Content format being published",
        "required": true,
        "constraint": {
          "type": "string",
          "enforceable": [
            "subset"
          ]
        }
      },
      "audience": {
        "source": "declared",
        "description": "Audience visibility for this post",
        "required": true,
        "constraint": {
          "type": "string",
          "enforceable": [
            "subset"
          ]
        }
      },
      "post_count_daily": {
        "source": "cumulative",
        "cumulativeField": "_count",
        "window": "daily",
        "description": "Running daily post count (resolved from execution log)",
        "required": true,
        "constraint": {
          "type": "number",
          "enforceable": [
            "max"
          ]
        }
      },
      "post_count_monthly": {
        "source": "cumulative",
        "cumulativeField": "_count",
        "window": "monthly",
        "description": "Running monthly post count (resolved from execution log)",
        "required": true,
        "constraint": {
          "type": "number",
          "enforceable": [
            "max"
          ]
        }
      }
    }
  },
  "requiredGates": [
    "bounds",
    "intent",
    "commitment",
    "decision_owner"
  ],
  "ttl": {
    "default": 86400,
    "max": 31536000
  },
  "retention_minimum": 7776000,
  "content_binding": {
    "version": "1",
    "kind": "text"
  }
}