$ yg check --json
exit: 1
--- stdout
{
  "schema": "yg-check/1",
  "project": {
    "name": "<ROOT-NAME>",
    "nodes": 3,
    "aspects": 1,
    "flows": 1
  },
  "exit": {
    "code": 1,
    "status": "fail",
    "reason": "5 blocking findings and 1 warning."
  },
  "coverage": {
    "files": 7,
    "covered": 2,
    "nodeOwned": 2,
    "typeCovered": 0,
    "excluded": 0,
    "requiresNothing": false
  },
  "totals": {
    "errors": 5,
    "warnings": 1,
    "draftSkipped": 0,
    "verdicts": {
      "approved": 0,
      "refused": 0,
      "unverified": 2,
      "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-03"
      },
      "node": "app/svc-03",
      "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-03.",
      "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-03",
      "unit": "node:app/svc-03",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-03"
      },
      "label": "unverified"
    },
    {
      "code": "yaml-invalid",
      "severity": "error",
      "what": "yg-node.yaml in app/svc-02 does not parse: Flow sequence in block collection must be sufficiently indented and end with a ] at line 7, column 1:\nbad: [unclosed\n^",
      "why": "The file is not valid YAML, so component 'app/svc-02' was not loaded: a flow or relation naming it reads it as missing, and the files it maps read as unmapped, until it parses.",
      "next": "Fix the YAML in .yggdrasil/model/app/svc-02/yg-node.yaml.",
      "node": "app/svc-02",
      "label": "yaml-invalid"
    },
    {
      "code": "flow-node-broken",
      "severity": "error",
      "what": "Flow 'Checkout' names node 'app/svc-02', whose yg-node.yaml did not parse.",
      "why": "The component was not loaded, so the flow cannot resolve it — a symptom of the yaml-invalid error on 'app/svc-02', not a missing node.",
      "next": "Fix the YAML in .yggdrasil/model/app/svc-02/yg-node.yaml; the flow resolves once the component loads.",
      "label": "flow-node-broken"
    },
    {
      "code": "unmapped-files",
      "severity": "error",
      "what": "1 source file not covered by any node.\nsrc/svc-02/index.ts",
      "why": "No node maps these files, so no rule checks them, and yg check stays red until each one has an owner (or is moved out of coverage.required).",
      "next": "Add each file to a node's mapping, or create a new node for it — yg context --file <path> lists candidate owners.",
      "files": [
        "src/svc-02/index.ts"
      ],
      "label": "unmapped"
    },
    {
      "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": "edit .yggdrasil/model/app/svc-02/yg-node.yaml  (yaml-invalid — 3 errors need a code or graph fix)",
  "groups": [
    {
      "code": "yaml-invalid",
      "label": "yaml-invalid",
      "aspect": null,
      "severity": "error",
      "subject": "yg-node.yaml in app/svc-02 does not parse: Flow sequence in block collection must be sufficiently indented and end with a ] at line 7, column 1",
      "why": "The file is not valid YAML, so component 'app/svc-02' was not loaded: a flow or relation naming it reads it as missing, and the files it maps read as unmapped, until it parses.",
      "next": "Fix the YAML in .yggdrasil/model/app/svc-02/yg-node.yaml.",
      "members": [
        2
      ]
    },
    {
      "code": "flow-node-broken",
      "label": "flow-node-broken",
      "aspect": null,
      "severity": "error",
      "subject": "Flow 'Checkout' names node 'app/svc-02', whose yg-node.yaml did not parse",
      "why": "The component was not loaded, so the flow cannot resolve it — a symptom of the yaml-invalid error on 'app/svc-02', not a missing node.",
      "next": "Fix the YAML in .yggdrasil/model/app/svc-02/yg-node.yaml; the flow resolves once the component loads.",
      "members": [
        3
      ]
    },
    {
      "code": "unmapped-files",
      "label": "unmapped",
      "aspect": null,
      "severity": "error",
      "subject": "1 file belongs to no node",
      "why": "No node maps these files, so no rule checks them, and yg check stays red until each one has an owner (or is moved out of coverage.required).",
      "next": "Add each file to a node's mapping, or create a new node for it — yg context --file src/svc-02/index.ts lists candidate owners.",
      "members": [
        4
      ]
    },
    {
      "code": "unverified",
      "label": "unverified",
      "aspect": null,
      "severity": "error",
      "subject": "2 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,
        1
      ]
    },
    {
      "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": [
        5
      ]
    }
  ],
  "next": {
    "command": null,
    "text": "edit .yggdrasil/model/app/svc-02/yg-node.yaml",
    "target": {
      "node": "app/svc-02",
      "file": ".yggdrasil/model/app/svc-02/yg-node.yaml"
    },
    "cost": {
      "free": 0,
      "reviewerPairs": 0,
      "reviewerCalls": 0
    },
    "remaining": {
      "needsFix": 3,
      "fillable": 2,
      "needsUser": 0,
      "waitingOnReviewer": 0
    },
    "requiresUser": false,
    "then": "yg check --approve --only-deterministic  (2 script pairs · free)"
  },
  "banner": "partial: 1 component file did not parse (app/svc-02), so that component was left out — the findings below were computed without it and may be symptoms of it; fix it first.",
  "notes": []
}
--- stderr
