$ yg check --json
exit: 1
--- stdout
{
  "schema": "yg-check/1",
  "project": {
    "name": "<ROOT-NAME>",
    "nodes": 25,
    "aspects": 2,
    "flows": 0
  },
  "exit": {
    "code": 1,
    "status": "fail",
    "reason": "34 blocking findings and 1 warning."
  },
  "coverage": {
    "files": 29,
    "covered": 24,
    "nodeOwned": 24,
    "typeCovered": 0,
    "excluded": 0,
    "requiresNothing": false
  },
  "totals": {
    "errors": 34,
    "warnings": 1,
    "draftSkipped": 0,
    "verdicts": {
      "approved": 16,
      "refused": 8,
      "unverified": 24,
      "stale": 0,
      "prompt-too-large": 0,
      "companion-error": 0
    },
    "verified": {
      "deterministic": 16,
      "llm": 0
    }
  },
  "pairs": [
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-01"
      },
      "node": "app/svc-01",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "93f3387bda4419ddc3a6e3781b17b4e49db82276526d0e1f0804a662a6ade739",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-02"
      },
      "node": "app/svc-02",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "6d4a3e3e28642cc7cf180dcf1e366f0c2e39055eab29d2c3df2afb21108551f6",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-03"
      },
      "node": "app/svc-03",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "refused",
      "reviewer": "deterministic",
      "hash": "86928924ef3d11b50a4d67a651ee67e0a9a65bd91496dfbbfaa42d4f553472fb",
      "filled": null,
      "report": "src/svc-03/index.ts:2: TODO marker left in shipped code — move it to the tracker"
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-04"
      },
      "node": "app/svc-04",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "d6c1ad4abe39db1175d74c2f219b4b3fee04be056ed5b2166c990627bc7bbdde",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-05"
      },
      "node": "app/svc-05",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "18b73d18095ccb2d0d07a395c1025493615493b1b0a2402aad4e6be97d067603",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-06"
      },
      "node": "app/svc-06",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "refused",
      "reviewer": "deterministic",
      "hash": "8eaf6d1b3d7398154dfc2fcf954f3ff902d11ba74e811c265f13729269135834",
      "filled": null,
      "report": "src/svc-06/index.ts:2: TODO marker left in shipped code — move it to the tracker"
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-07"
      },
      "node": "app/svc-07",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "4e9e7743b55a8ec28c7d8326b69d221dc645aef85e54f532ff75e62d568e7b80",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-08"
      },
      "node": "app/svc-08",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "130f54469629f034fa6267e63569c3a12f4514bc5873950f37db5922bc3af4cb",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-09"
      },
      "node": "app/svc-09",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "refused",
      "reviewer": "deterministic",
      "hash": "016a05bca57aca55c14abaa2dafb17e6fc6f01eb6b6e2e38a045a3d633c4a621",
      "filled": null,
      "report": "src/svc-09/index.ts:2: TODO marker left in shipped code — move it to the tracker"
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-10"
      },
      "node": "app/svc-10",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "85dc66ff9ce093cc13e6f841ce583e90bd03b720015857610cc74e89f8c593f3",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-11"
      },
      "node": "app/svc-11",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "ce7b8e54d57240444d1c4ce39fc4fdd616021ace04baada270020887424ae36d",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-12"
      },
      "node": "app/svc-12",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "refused",
      "reviewer": "deterministic",
      "hash": "7fe080e8ae60a891e4966d2d221aa19017d35d1d9eb5a4f43829f894399c9597",
      "filled": null,
      "report": "src/svc-12/index.ts:2: TODO marker left in shipped code — move it to the tracker"
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-13"
      },
      "node": "app/svc-13",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "b71526d53f465799076f3d1e658b6b0c574fc12341955078b427206cad9be938",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-14"
      },
      "node": "app/svc-14",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "9590cec14ccbbcdd6e30b4f0ec462a4b2fbac597bb75f014f227cc9491e8cae8",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-15"
      },
      "node": "app/svc-15",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "refused",
      "reviewer": "deterministic",
      "hash": "fa17911a02fec2a498661ceb7d7ee5eecc8bb73eedc3ff126131aa1d06190d1f",
      "filled": null,
      "report": "src/svc-15/index.ts:2: TODO marker left in shipped code — move it to the tracker"
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-16"
      },
      "node": "app/svc-16",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "8534974571463966038bfe4e34c12a5d1acace83d39eb5b2a9e07e0281b87318",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-17"
      },
      "node": "app/svc-17",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "168f32da296a35556e51a994475e5b01c1a91ae559a3dac10e71f0f215116ace",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-18"
      },
      "node": "app/svc-18",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "refused",
      "reviewer": "deterministic",
      "hash": "9423378908e7d8cce1751147ce3e3511055d7eff701c29074e9e12f3f52cbba1",
      "filled": null,
      "report": "src/svc-18/index.ts:2: TODO marker left in shipped code — move it to the tracker"
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-19"
      },
      "node": "app/svc-19",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "cc4051810d120a7265ab8e3d110da94cf243b6aa245214551c296e62dc989b9e",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-20"
      },
      "node": "app/svc-20",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "ce1b8e6a32f51471496bc569d947a9a3c018812dd6f1efe33631cebf6f722e6f",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-21"
      },
      "node": "app/svc-21",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "refused",
      "reviewer": "deterministic",
      "hash": "5fd414cc7ae683db4acb51e269ea92d41d8a7619bc23adab23256dd02ac2be1f",
      "filled": null,
      "report": "src/svc-21/index.ts:2: TODO marker left in shipped code — move it to the tracker"
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-22"
      },
      "node": "app/svc-22",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "df65349aa59753b0dad4ff24c42474b91366b31007006a7ca1f852690d118d72",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-23"
      },
      "node": "app/svc-23",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "approved",
      "reviewer": "deterministic",
      "hash": "278bb678105a19cfbd73737f99037e7b93e5e15193a04b1f3153faee18c534fb",
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-24"
      },
      "node": "app/svc-24",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "refused",
      "reviewer": "deterministic",
      "hash": "4069eca3a30fc5a7fa6639e77f0cdd83627729242b0c25b7bbf262f40e976475",
      "filled": null,
      "report": "src/svc-24/index.ts:2: TODO marker left in shipped code — move it to the tracker"
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-01"
      },
      "node": "app/svc-01",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-02"
      },
      "node": "app/svc-02",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-03"
      },
      "node": "app/svc-03",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-04"
      },
      "node": "app/svc-04",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-05"
      },
      "node": "app/svc-05",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-06"
      },
      "node": "app/svc-06",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-07"
      },
      "node": "app/svc-07",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-08"
      },
      "node": "app/svc-08",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-09"
      },
      "node": "app/svc-09",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-10"
      },
      "node": "app/svc-10",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-11"
      },
      "node": "app/svc-11",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-12"
      },
      "node": "app/svc-12",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-13"
      },
      "node": "app/svc-13",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-14"
      },
      "node": "app/svc-14",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-15"
      },
      "node": "app/svc-15",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-16"
      },
      "node": "app/svc-16",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-17"
      },
      "node": "app/svc-17",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-18"
      },
      "node": "app/svc-18",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-19"
      },
      "node": "app/svc-19",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-20"
      },
      "node": "app/svc-20",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-21"
      },
      "node": "app/svc-21",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-22"
      },
      "node": "app/svc-22",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-23"
      },
      "node": "app/svc-23",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "readable-names",
      "unit": {
        "kind": "node",
        "path": "app/svc-24"
      },
      "node": "app/svc-24",
      "kind": "llm",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "standard",
      "hash": null,
      "filled": null
    }
  ],
  "issues": [
    {
      "code": "aspect-violation-enforced",
      "severity": "error",
      "what": "Aspect 'no-todo' is refused on node:app/svc-03 by a script rule.\nViolations:\nsrc/svc-03/index.ts:2: TODO marker left in shipped code — move it to the tracker",
      "why": "Unfinished work belongs in the tracker, not in shipped code.",
      "next": "Change the code at these lines, then run yg check --approve --only-deterministic (free) to record the new verdict.",
      "aspect": "no-todo",
      "node": "app/svc-03",
      "unit": "node:app/svc-03",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-03"
      },
      "violations": [
        {
          "file": "src/svc-03/index.ts",
          "line": 2,
          "message": "TODO marker left in shipped code — move it to the tracker"
        }
      ],
      "label": "refused"
    },
    {
      "code": "aspect-violation-enforced",
      "severity": "error",
      "what": "Aspect 'no-todo' is refused on node:app/svc-06 by a script rule.\nViolations:\nsrc/svc-06/index.ts:2: TODO marker left in shipped code — move it to the tracker",
      "why": "Unfinished work belongs in the tracker, not in shipped code.",
      "next": "Change the code at these lines, then run yg check --approve --only-deterministic (free) to record the new verdict.",
      "aspect": "no-todo",
      "node": "app/svc-06",
      "unit": "node:app/svc-06",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-06"
      },
      "violations": [
        {
          "file": "src/svc-06/index.ts",
          "line": 2,
          "message": "TODO marker left in shipped code — move it to the tracker"
        }
      ],
      "label": "refused"
    },
    {
      "code": "aspect-violation-enforced",
      "severity": "error",
      "what": "Aspect 'no-todo' is refused on node:app/svc-09 by a script rule.\nViolations:\nsrc/svc-09/index.ts:2: TODO marker left in shipped code — move it to the tracker",
      "why": "Unfinished work belongs in the tracker, not in shipped code.",
      "next": "Change the code at these lines, then run yg check --approve --only-deterministic (free) to record the new verdict.",
      "aspect": "no-todo",
      "node": "app/svc-09",
      "unit": "node:app/svc-09",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-09"
      },
      "violations": [
        {
          "file": "src/svc-09/index.ts",
          "line": 2,
          "message": "TODO marker left in shipped code — move it to the tracker"
        }
      ],
      "label": "refused"
    },
    {
      "code": "aspect-violation-enforced",
      "severity": "error",
      "what": "Aspect 'no-todo' is refused on node:app/svc-12 by a script rule.\nViolations:\nsrc/svc-12/index.ts:2: TODO marker left in shipped code — move it to the tracker",
      "why": "Unfinished work belongs in the tracker, not in shipped code.",
      "next": "Change the code at these lines, then run yg check --approve --only-deterministic (free) to record the new verdict.",
      "aspect": "no-todo",
      "node": "app/svc-12",
      "unit": "node:app/svc-12",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-12"
      },
      "violations": [
        {
          "file": "src/svc-12/index.ts",
          "line": 2,
          "message": "TODO marker left in shipped code — move it to the tracker"
        }
      ],
      "label": "refused"
    },
    {
      "code": "aspect-violation-enforced",
      "severity": "error",
      "what": "Aspect 'no-todo' is refused on node:app/svc-15 by a script rule.\nViolations:\nsrc/svc-15/index.ts:2: TODO marker left in shipped code — move it to the tracker",
      "why": "Unfinished work belongs in the tracker, not in shipped code.",
      "next": "Change the code at these lines, then run yg check --approve --only-deterministic (free) to record the new verdict.",
      "aspect": "no-todo",
      "node": "app/svc-15",
      "unit": "node:app/svc-15",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-15"
      },
      "violations": [
        {
          "file": "src/svc-15/index.ts",
          "line": 2,
          "message": "TODO marker left in shipped code — move it to the tracker"
        }
      ],
      "label": "refused"
    },
    {
      "code": "aspect-violation-enforced",
      "severity": "error",
      "what": "Aspect 'no-todo' is refused on node:app/svc-18 by a script rule.\nViolations:\nsrc/svc-18/index.ts:2: TODO marker left in shipped code — move it to the tracker",
      "why": "Unfinished work belongs in the tracker, not in shipped code.",
      "next": "Change the code at these lines, then run yg check --approve --only-deterministic (free) to record the new verdict.",
      "aspect": "no-todo",
      "node": "app/svc-18",
      "unit": "node:app/svc-18",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-18"
      },
      "violations": [
        {
          "file": "src/svc-18/index.ts",
          "line": 2,
          "message": "TODO marker left in shipped code — move it to the tracker"
        }
      ],
      "label": "refused"
    },
    {
      "code": "aspect-violation-enforced",
      "severity": "error",
      "what": "Aspect 'no-todo' is refused on node:app/svc-21 by a script rule.\nViolations:\nsrc/svc-21/index.ts:2: TODO marker left in shipped code — move it to the tracker",
      "why": "Unfinished work belongs in the tracker, not in shipped code.",
      "next": "Change the code at these lines, then run yg check --approve --only-deterministic (free) to record the new verdict.",
      "aspect": "no-todo",
      "node": "app/svc-21",
      "unit": "node:app/svc-21",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-21"
      },
      "violations": [
        {
          "file": "src/svc-21/index.ts",
          "line": 2,
          "message": "TODO marker left in shipped code — move it to the tracker"
        }
      ],
      "label": "refused"
    },
    {
      "code": "aspect-violation-enforced",
      "severity": "error",
      "what": "Aspect 'no-todo' is refused on node:app/svc-24 by a script rule.\nViolations:\nsrc/svc-24/index.ts:2: TODO marker left in shipped code — move it to the tracker",
      "why": "Unfinished work belongs in the tracker, not in shipped code.",
      "next": "Change the code at these lines, then run yg check --approve --only-deterministic (free) to record the new verdict.",
      "aspect": "no-todo",
      "node": "app/svc-24",
      "unit": "node:app/svc-24",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-24"
      },
      "violations": [
        {
          "file": "src/svc-24/index.ts",
          "line": 2,
          "message": "TODO marker left in shipped code — move it to the tracker"
        }
      ],
      "label": "refused"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-01.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-01",
      "unit": "node:app/svc-01",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-01"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-02.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-02",
      "unit": "node:app/svc-02",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-02"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-03.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-03",
      "unit": "node:app/svc-03",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-03"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-04.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-04",
      "unit": "node:app/svc-04",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-04"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-05.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-05",
      "unit": "node:app/svc-05",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-05"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-06.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-06",
      "unit": "node:app/svc-06",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-06"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-07.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-07",
      "unit": "node:app/svc-07",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-07"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-08.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-08",
      "unit": "node:app/svc-08",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-08"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-09.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-09",
      "unit": "node:app/svc-09",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-09"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-10.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-10",
      "unit": "node:app/svc-10",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-10"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-11.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-11",
      "unit": "node:app/svc-11",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-11"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-12.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-12",
      "unit": "node:app/svc-12",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-12"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-13.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-13",
      "unit": "node:app/svc-13",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-13"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-14.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-14",
      "unit": "node:app/svc-14",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-14"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-15.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-15",
      "unit": "node:app/svc-15",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-15"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-16.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-16",
      "unit": "node:app/svc-16",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-16"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-17.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-17",
      "unit": "node:app/svc-17",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-17"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-18.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-18",
      "unit": "node:app/svc-18",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-18"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-19.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-19",
      "unit": "node:app/svc-19",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-19"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-20.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-20",
      "unit": "node:app/svc-20",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-20"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-21.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-21",
      "unit": "node:app/svc-21",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-21"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-22.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-22",
      "unit": "node:app/svc-22",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-22"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-23.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-23",
      "unit": "node:app/svc-23",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-23"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No verdict yet for aspect 'readable-names' on node:app/svc-24.",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "aspect": "readable-names",
      "node": "app/svc-24",
      "unit": "node:app/svc-24",
      "cause": "never-reviewed",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-24"
      },
      "label": "unverified"
    },
    {
      "code": "relation-broken",
      "severity": "error",
      "what": "Relation target 'app/svc-99' does not exist.",
      "why": "This node declares a dependency on a node the graph does not contain, so the relation cannot be checked. Nodes under app: svc-01, svc-02, svc-03, svc-04, svc-05, svc-06, svc-07, svc-08, svc-09, svc-10, svc-11, svc-12, … (24 in all).",
      "next": "Correct the target in .yggdrasil/model/app/svc-05/yg-node.yaml relations, or remove the relation.",
      "node": "app/svc-05",
      "label": "relation-broken"
    },
    {
      "code": "unmapped-files",
      "severity": "error",
      "what": "1 source file not covered by any node.\nsrc/tools/gen.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/tools/gen.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 src/svc-03/index.ts:2  (refused — 10 errors need a code or graph fix)",
  "groups": [
    {
      "code": "aspect-violation-enforced",
      "label": "refused",
      "aspect": "no-todo",
      "severity": "error",
      "subject": "no-todo — 8 violations in 8 nodes",
      "why": "Unfinished work belongs in the tracker, not in shipped code.",
      "next": "Change the code at these lines, then run yg check --approve --only-deterministic (free) to record the new verdict.",
      "members": [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7
      ]
    },
    {
      "code": "relation-broken",
      "label": "relation-broken",
      "aspect": null,
      "severity": "error",
      "subject": "Relation target 'app/svc-99' does not exist",
      "why": "This node declares a dependency on a node the graph does not contain, so the relation cannot be checked. Nodes under app: svc-01, svc-02, svc-03, svc-04, svc-05, svc-06, svc-07, svc-08, svc-09, svc-10, svc-11, svc-12, … (24 in all).",
      "next": "Correct the target in .yggdrasil/model/app/svc-05/yg-node.yaml relations, or remove the relation.",
      "members": [
        32
      ]
    },
    {
      "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/tools/gen.ts lists candidate owners.",
      "members": [
        33
      ]
    },
    {
      "code": "unverified",
      "label": "unverified",
      "aspect": null,
      "severity": "error",
      "subject": "24 pairs with no verdict yet",
      "cause": "never-reviewed",
      "why": "The lock holds no entry for this pair: it is new (a new rule, component or mapped file), or the fill that would have judged it did not complete.",
      "next": "yg check --approve",
      "members": [
        8,
        9,
        10,
        11,
        12,
        13,
        14,
        15,
        16,
        17,
        18,
        19,
        20,
        21,
        22,
        23,
        24,
        25,
        26,
        27,
        28,
        29,
        30,
        31
      ]
    },
    {
      "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": [
        34
      ]
    }
  ],
  "next": {
    "command": null,
    "text": "edit src/svc-03/index.ts:2",
    "target": {
      "node": "app/svc-03",
      "file": "src/svc-03/index.ts"
    },
    "cost": {
      "free": 0,
      "reviewerPairs": 0,
      "reviewerCalls": 0
    },
    "remaining": {
      "needsFix": 10,
      "fillable": 24,
      "needsUser": 0,
      "waitingOnReviewer": 0
    },
    "requiresUser": false,
    "then": "yg check --approve  (24 reviewer pairs · 24 calls · paid)"
  },
  "banner": null,
  "notes": []
}
--- stderr
