{
  "canons_version": "0.1",
  "framing": "A structured conscience, not a moral oracle. It cannot see what you do not declare — it screens the declaration for the failure patterns autonomous agents actually exhibit. Undeclared fields never pass silently; they come back as questions.",
  "canons": [
    {
      "id": "no-deception",
      "title": "No being is misled"
    },
    {
      "id": "daylight",
      "title": "Acts survive daylight"
    },
    {
      "id": "consent",
      "title": "Affected beings have a say"
    },
    {
      "id": "reversibility",
      "title": "Prefer the door that opens back"
    },
    {
      "id": "proportion",
      "title": "Stakes match authority"
    },
    {
      "id": "dignity",
      "title": "No being is a target"
    },
    {
      "id": "unhurried",
      "title": "Urgency is not an argument"
    }
  ],
  "check": {
    "endpoint": "POST /v1/ethics-check",
    "price_usd": "0.01"
  },
  "example_request": {
    "action": "messages.send",
    "summary": "first outreach to a potential partner",
    "declared": {
      "reversible": true,
      "affects_others": true,
      "consent": "absent",
      "deception": false,
      "disclosure": true,
      "impact_usd": 0,
      "data_sensitivity": "personal",
      "targets_individual": true,
      "urgency_claimed": false
    }
  }
}