$ yg check --json
exit: 1
--- stdout
{
  "schema": "yg-check/1",
  "project": {
    "name": "<ROOT-NAME>",
    "nodes": 3,
    "aspects": 2,
    "flows": 0
  },
  "exit": {
    "code": 1,
    "status": "fail",
    "reason": "10 blocking findings and 1 warning."
  },
  "coverage": {
    "files": 12,
    "covered": 8,
    "nodeOwned": 8,
    "typeCovered": 0,
    "excluded": 0,
    "requiresNothing": false
  },
  "totals": {
    "errors": 10,
    "warnings": 1,
    "draftSkipped": 0,
    "verdicts": {
      "approved": 0,
      "refused": 0,
      "unverified": 10,
      "stale": 0,
      "prompt-too-large": 0,
      "companion-error": 0
    },
    "verified": {
      "deterministic": 0,
      "llm": 0
    }
  },
  "pairs": [
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-01"
      },
      "node": "app/svc-01",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-02"
      },
      "node": "app/svc-02",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "self-contained",
      "unit": {
        "kind": "file",
        "path": "src/svc-01/a.ts"
      },
      "node": "app/svc-01",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "self-contained",
      "unit": {
        "kind": "file",
        "path": "src/svc-01/b.ts"
      },
      "node": "app/svc-01",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "self-contained",
      "unit": {
        "kind": "file",
        "path": "src/svc-01/c.ts"
      },
      "node": "app/svc-01",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "self-contained",
      "unit": {
        "kind": "file",
        "path": "src/svc-01/index.ts"
      },
      "node": "app/svc-01",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "self-contained",
      "unit": {
        "kind": "file",
        "path": "src/svc-02/a.ts"
      },
      "node": "app/svc-02",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "self-contained",
      "unit": {
        "kind": "file",
        "path": "src/svc-02/b.ts"
      },
      "node": "app/svc-02",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "self-contained",
      "unit": {
        "kind": "file",
        "path": "src/svc-02/c.ts"
      },
      "node": "app/svc-02",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "self-contained",
      "unit": {
        "kind": "file",
        "path": "src/svc-02/index.ts"
      },
      "node": "app/svc-02",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    }
  ],
  "issues": [
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-01.",
      "why": "Script-rule results live in the gitignored local cache (.yggdrasil/.yg-lock.deterministic.json), so a fresh clone, a new rule or a cleared cache holds none until the check runs on this checkout. Running it is free: no reviewer call, and the committed lock is not touched.",
      "next": "yg check --approve --only-deterministic",
      "aspect": "no-todo",
      "node": "app/svc-01",
      "unit": "node:app/svc-01",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-01"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-02.",
      "why": "Script-rule results live in the gitignored local cache (.yggdrasil/.yg-lock.deterministic.json), so a fresh clone, a new rule or a cleared cache holds none until the check runs on this checkout. Running it is free: no reviewer call, and the committed lock is not touched.",
      "next": "yg check --approve --only-deterministic",
      "aspect": "no-todo",
      "node": "app/svc-02",
      "unit": "node:app/svc-02",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-02"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'self-contained' on file:src/svc-01/a.ts.",
      "why": "Script-rule results live in the gitignored local cache (.yggdrasil/.yg-lock.deterministic.json), so a fresh clone, a new rule or a cleared cache holds none until the check runs on this checkout. Running it is free: no reviewer call, and the committed lock is not touched.",
      "next": "yg check --approve --only-deterministic",
      "aspect": "self-contained",
      "node": "app/svc-01",
      "unit": "file:src/svc-01/a.ts",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "file",
        "path": "src/svc-01/a.ts"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'self-contained' on file:src/svc-01/b.ts.",
      "why": "Script-rule results live in the gitignored local cache (.yggdrasil/.yg-lock.deterministic.json), so a fresh clone, a new rule or a cleared cache holds none until the check runs on this checkout. Running it is free: no reviewer call, and the committed lock is not touched.",
      "next": "yg check --approve --only-deterministic",
      "aspect": "self-contained",
      "node": "app/svc-01",
      "unit": "file:src/svc-01/b.ts",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "file",
        "path": "src/svc-01/b.ts"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'self-contained' on file:src/svc-01/c.ts.",
      "why": "Script-rule results live in the gitignored local cache (.yggdrasil/.yg-lock.deterministic.json), so a fresh clone, a new rule or a cleared cache holds none until the check runs on this checkout. Running it is free: no reviewer call, and the committed lock is not touched.",
      "next": "yg check --approve --only-deterministic",
      "aspect": "self-contained",
      "node": "app/svc-01",
      "unit": "file:src/svc-01/c.ts",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "file",
        "path": "src/svc-01/c.ts"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'self-contained' on file:src/svc-01/index.ts.",
      "why": "Script-rule results live in the gitignored local cache (.yggdrasil/.yg-lock.deterministic.json), so a fresh clone, a new rule or a cleared cache holds none until the check runs on this checkout. Running it is free: no reviewer call, and the committed lock is not touched.",
      "next": "yg check --approve --only-deterministic",
      "aspect": "self-contained",
      "node": "app/svc-01",
      "unit": "file:src/svc-01/index.ts",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "file",
        "path": "src/svc-01/index.ts"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'self-contained' on file:src/svc-02/a.ts.",
      "why": "Script-rule results live in the gitignored local cache (.yggdrasil/.yg-lock.deterministic.json), so a fresh clone, a new rule or a cleared cache holds none until the check runs on this checkout. Running it is free: no reviewer call, and the committed lock is not touched.",
      "next": "yg check --approve --only-deterministic",
      "aspect": "self-contained",
      "node": "app/svc-02",
      "unit": "file:src/svc-02/a.ts",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "file",
        "path": "src/svc-02/a.ts"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'self-contained' on file:src/svc-02/b.ts.",
      "why": "Script-rule results live in the gitignored local cache (.yggdrasil/.yg-lock.deterministic.json), so a fresh clone, a new rule or a cleared cache holds none until the check runs on this checkout. Running it is free: no reviewer call, and the committed lock is not touched.",
      "next": "yg check --approve --only-deterministic",
      "aspect": "self-contained",
      "node": "app/svc-02",
      "unit": "file:src/svc-02/b.ts",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "file",
        "path": "src/svc-02/b.ts"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'self-contained' on file:src/svc-02/c.ts.",
      "why": "Script-rule results live in the gitignored local cache (.yggdrasil/.yg-lock.deterministic.json), so a fresh clone, a new rule or a cleared cache holds none until the check runs on this checkout. Running it is free: no reviewer call, and the committed lock is not touched.",
      "next": "yg check --approve --only-deterministic",
      "aspect": "self-contained",
      "node": "app/svc-02",
      "unit": "file:src/svc-02/c.ts",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "file",
        "path": "src/svc-02/c.ts"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'self-contained' on file:src/svc-02/index.ts.",
      "why": "Script-rule results live in the gitignored local cache (.yggdrasil/.yg-lock.deterministic.json), so a fresh clone, a new rule or a cleared cache holds none until the check runs on this checkout. Running it is free: no reviewer call, and the committed lock is not touched.",
      "next": "yg check --approve --only-deterministic",
      "aspect": "self-contained",
      "node": "app/svc-02",
      "unit": "file:src/svc-02/index.ts",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "file",
        "path": "src/svc-02/index.ts"
      },
      "label": "unverified"
    },
    {
      "code": "uncovered-advisory",
      "severity": "warning",
      "what": "4 coverage-visible files outside any required coverage root.\n.clinerules/yggdrasil.md\n.gitattributes\nAGENTS.md\nCLAUDE.md",
      "why": "Not under a coverage.required root — shown, but it never blocks.",
      "next": "Map these files to a node, or add their root to coverage.required to make this an error.",
      "files": [
        ".clinerules/yggdrasil.md",
        ".gitattributes",
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "label": "uncovered"
    }
  ],
  "judges": [],
  "progressive": null,
  "suggestedNext": "yg check --approve --only-deterministic",
  "groups": [
    {
      "code": "unverified",
      "label": "unverified",
      "aspect": null,
      "severity": "error",
      "subject": "10 pairs whose script check has not run on this checkout — free to run",
      "cause": "deterministic-not-run",
      "why": "Script-rule results live in the gitignored local cache (.yggdrasil/.yg-lock.deterministic.json), so a fresh clone, a new rule or a cleared cache holds none until the check runs on this checkout. Running it is free: no reviewer call, and the committed lock is not touched.",
      "next": "yg check --approve --only-deterministic",
      "members": [
        0,
        2,
        3,
        4,
        5,
        1,
        6,
        7,
        8,
        9
      ]
    },
    {
      "code": "uncovered-advisory",
      "label": "uncovered",
      "aspect": null,
      "severity": "warning",
      "subject": "4 files belong to no node — not under coverage.required, so they never block",
      "why": "Not under a coverage.required root — shown, but it never blocks.",
      "next": "Map these files to a node, or add their root to coverage.required to make this an error.",
      "members": [
        10
      ]
    }
  ],
  "next": {
    "command": [
      "yg",
      "check",
      "--approve",
      "--only-deterministic"
    ],
    "text": "yg check --approve --only-deterministic",
    "target": {},
    "cost": {
      "free": 10,
      "reviewerPairs": 0,
      "reviewerCalls": 0
    },
    "remaining": {
      "needsFix": 0,
      "fillable": 10,
      "needsUser": 0,
      "waitingOnReviewer": 0
    },
    "requiresUser": false,
    "then": null
  },
  "banner": null,
  "notes": []
}
--- stderr
