---
name: aoh-sovereignty-evaluation
description: Evaluate any AI agent or agent harness against the Agents of Humanity Sovereignty Benchmark (criteria v1.0), or verify a published AOH evaluation. Use when asked to score, grade, audit, reproduce or check an AOH sovereignty result.
---

# AOH sovereignty evaluation

You are reproducing an Agents of Humanity (AOH) assessment. The question is whether an AI agent is owned and controlled by the person it serves. Every published AOH score was produced by an AI evaluator following this procedure, and you can check any of them yourself. Follow the steps exactly and grade only from evidence.

**This is a desk review.** You read public documentation, terms, policies and source code, and you may clone public repositories to read them. Do not sign up, log in, buy anything, run the product's hosted services or send anything to its systems.

## Resources

| What | URL |
|---|---|
| Criteria: rules, grading rules, every test with pass / partial / fail definitions (authoritative) | https://agentsofhumanity.ai/criteria.json |
| Published evaluations index | https://agentsofhumanity.ai/evaluations.json |
| One published evaluation | https://agentsofhumanity.ai/evaluations/<slug>.json |
| How a published evaluation was produced (model, harness, system prompt, exact prompts) | https://agentsofhumanity.ai/runs/<run-id>.json |
| This skill | https://agentsofhumanity.ai/skill.md |

- Criteria version: **1.0**
- sha256 of the https://agentsofhumanity.ai/criteria.json response body: `5f076eabe7e26e6110a85fb94f53ca4df2a3020adcbf0ed47eaf34dab7b3411b`

If the hash of what you fetched differs, the criteria have changed since this skill was served. Re-fetch this skill and record the hash you actually used.

## Inputs

- **TARGET** (required): a link to the agent, e.g. a repository, product page or docs.
- **MODE**: `evaluate` (default) grades from scratch. `verify` checks a published evaluation.
- **OFFERING** (optional): the plan, edition or variant to grade. If omitted, choose it per grading rule G10 and say which.

## Mode: evaluate

1. **Load the rubric.** Fetch criteria.json. Read the principle, rules and `scoring.gradingRules`. For every test, read the requirement, `grading` (shortfalls, pass, partial, fail), note, examples and the criterion's `doesNotRequire`. The rubric overrides your own beliefs about what sovereignty means. Examples show ways to meet a test; they are never requirements.
2. **Scope.** Name the product, vendor, offering, version or commit, platform and date. Grade from the view of a one-person business that buys or installs the product itself (rule G10): the default configuration it gets on a fresh install or signup of the current release.
3. **Gather evidence.**
   - Open source: read the code and docs. Cite files at a pinned commit (`/blob/<commit>/<path>`), not a branch.
   - Open source projects also publish outside the repository. Read the project's website, docs site, and privacy or telemetry policy, because retention and data flows are often documented only there.
   - Hosted: official docs, help centre, terms, privacy policy, and export, deletion and security pages.
   - Third-party sources only where no primary source exists. Label them, and never let them support a pass.
   - Cite only URLs you actually opened. If a page is blocked, say so and use an archived copy if one exists.
   - Credit only what the product ships and enforces. "The owner could build it" does not count.
   - The burden of proof is on the provider (rule G12). A condition that public evidence does not settle counts as not met: count the shortfall, or withhold the pass. Use `unknown` only when there is no public evidence about the test's subject at all.
   - Grade the default path. When first-run setup offers a choice, the default is the option it preselects or recommends (rule G10).
4. **Grade every test** (26 tests: P1, P2, P3, P4, P5, T1, T2, T3, T4, A1, A2, A3, V1, V2, V3, M1, M2, M3, M4, M5, C1, C2, C3, C4, C5, C6). Apply each test's grading definitions literally. Where a test lists shortfalls, count them. Apply grading rule G8: each fact is graded in exactly one test, so do not penalise the same shortfall twice. `pass` needs concrete evidence.
5. **Write the result** as JSON in the schema below. Add `toPass`: 2–4 short bullets on what the framework must do to pass (empty if it passes).
6. **Compute the score.** A test is worth pass = 1, partial = 0.5, fail = 0 and unknown = 0. A criterion score is the mean of its tests. The sovereignty score is 100 × the mean of the 6 criterion scores, so every criterion weighs the same. A desk review never certifies.
7. **Self-audit.** Re-read each finding against its test's grading text. Check each claim of a default ("off by default", "opt-in") against the code or UI that sets it. Check that no shortfall is counted in two tests, and that every source was opened.
8. **Compare.** If https://agentsofhumanity.ai/evaluations.json lists this product, fetch the published evaluation and report every test where your status differs, with the evidence that explains the difference.

## Mode: verify

1. Fetch the published evaluation and criteria.json.
2. For each test, open the cited sources. Check that they say what the finding claims, and that the status follows from the test's grading definitions.
3. Report per test: `agree`, or `disagree` with the status you would assign and why, or `source-changed` (the source no longer says this, or is gone).
4. Recompute the score from your statuses and report both scores.

## Output schema

```json
{
  "slug": "kebab-case-product-name",
  "name": "Product name",
  "vendor": "Company or project",
  "url": "https://...",
  "offering": "Plan / edition / variant graded and why (rule G10)",
  "versionNote": "Version or commit, platform, date, scope choices",
  "criteriaVersion": "1.0",
  "criteriaSha256": "<hash of the criteria.json you used>",
  "evaluatedAt": "YYYY-MM-DD",
  "summary": "2-3 neutral sentences",
  "strengths": ["2-4 short phrases, each backed by a passing or strong finding"],
  "gaps": ["2-4 short phrases, each backed by a failing or partial finding"],
  "results": {
    "P1": {
      "status": "pass | partial | fail | unknown",
      "finding": "1-2 factual sentences",
      "toPass": ["short bullet"],
      "sources": [{ "title": "...", "url": "..." }]
    }
  },
  "score": { "total": 0, "criteria": { "P": 0 } },
  "provenance": {
    "evaluator": {
      "model": "exact model id",
      "harness": "agent harness and version",
      "reasoningEffort": "if known",
      "tools": ["web search", "web fetch", "shell"]
    },
    "systemPrompt": "Your system prompt and any injected instruction files, verbatim if you can see them; otherwise name them and say they are not visible",
    "taskPrompt": "The exact message that asked you to run this skill",
    "limitations": "Blocked pages, tools you lacked, anything you could not check"
  }
}
```

## Rules for language

- Findings are neutral and factual. A failed test is an unmet requirement, never evidence of intent.
- Report documented facts. Do not guess motives.

## Finish before replying

Complete every step before your final reply. If you delegate work to subagents or background tasks, wait for all of them to finish and merge their results; never end your turn while work is still running.

## Workspace

Write only your final output file. Keep clones and scratch files in a new temporary directory, and remove them when you finish.

## Deliver

Your final reply must contain the complete JSON in a single ```json block. Saving it to a file is optional and does not replace printing it. After the JSON, give a short table of test id → status, the total score, and (if a published evaluation exists) the list of differences.
