$ yg check --approve --only-deterministic --json
exit: 1
--- stdout
{
  "schema": "yg-check/1",
  "project": {
    "name": "<ROOT-NAME>",
    "nodes": 25,
    "aspects": 1,
    "flows": 0
  },
  "exit": {
    "code": 1,
    "status": "aborted",
    "reason": "yg check --approve stopped: nothing recorded — 24 nodes need a log entry first."
  },
  "coverage": {
    "files": 28,
    "covered": 24,
    "nodeOwned": 24,
    "typeCovered": 0,
    "excluded": 0,
    "requiresNothing": false
  },
  "totals": {
    "errors": 48,
    "warnings": 1,
    "draftSkipped": 0,
    "verdicts": {
      "approved": 0,
      "refused": 0,
      "unverified": 24,
      "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": "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
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-04"
      },
      "node": "app/svc-04",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-05"
      },
      "node": "app/svc-05",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-06"
      },
      "node": "app/svc-06",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-07"
      },
      "node": "app/svc-07",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-08"
      },
      "node": "app/svc-08",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-09"
      },
      "node": "app/svc-09",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-10"
      },
      "node": "app/svc-10",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-11"
      },
      "node": "app/svc-11",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-12"
      },
      "node": "app/svc-12",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-13"
      },
      "node": "app/svc-13",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-14"
      },
      "node": "app/svc-14",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-15"
      },
      "node": "app/svc-15",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-16"
      },
      "node": "app/svc-16",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-17"
      },
      "node": "app/svc-17",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-18"
      },
      "node": "app/svc-18",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-19"
      },
      "node": "app/svc-19",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-20"
      },
      "node": "app/svc-20",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-21"
      },
      "node": "app/svc-21",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-22"
      },
      "node": "app/svc-22",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-23"
      },
      "node": "app/svc-23",
      "kind": "deterministic",
      "status": "enforced",
      "verdict": "unverified",
      "reviewer": "deterministic",
      "hash": null,
      "filled": null
    },
    {
      "aspect": "no-todo",
      "unit": {
        "kind": "node",
        "path": "app/svc-24"
      },
      "node": "app/svc-24",
      "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 '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": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-04.",
      "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-04",
      "unit": "node:app/svc-04",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-04"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-05.",
      "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-05",
      "unit": "node:app/svc-05",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-05"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-06.",
      "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-06",
      "unit": "node:app/svc-06",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-06"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-07.",
      "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-07",
      "unit": "node:app/svc-07",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-07"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-08.",
      "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-08",
      "unit": "node:app/svc-08",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-08"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-09.",
      "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-09",
      "unit": "node:app/svc-09",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-09"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-10.",
      "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-10",
      "unit": "node:app/svc-10",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-10"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-11.",
      "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-11",
      "unit": "node:app/svc-11",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-11"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-12.",
      "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-12",
      "unit": "node:app/svc-12",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-12"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-13.",
      "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-13",
      "unit": "node:app/svc-13",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-13"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-14.",
      "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-14",
      "unit": "node:app/svc-14",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-14"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-15.",
      "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-15",
      "unit": "node:app/svc-15",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-15"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-16.",
      "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-16",
      "unit": "node:app/svc-16",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-16"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-17.",
      "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-17",
      "unit": "node:app/svc-17",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-17"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-18.",
      "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-18",
      "unit": "node:app/svc-18",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-18"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-19.",
      "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-19",
      "unit": "node:app/svc-19",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-19"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-20.",
      "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-20",
      "unit": "node:app/svc-20",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-20"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-21.",
      "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-21",
      "unit": "node:app/svc-21",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-21"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-22.",
      "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-22",
      "unit": "node:app/svc-22",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-22"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-23.",
      "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-23",
      "unit": "node:app/svc-23",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-23"
      },
      "label": "unverified"
    },
    {
      "code": "unverified",
      "severity": "error",
      "what": "No local result for script rule 'no-todo' on node:app/svc-24.",
      "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-24",
      "unit": "node:app/svc-24",
      "cause": "deterministic-not-run",
      "unitRef": {
        "kind": "node",
        "path": "app/svc-24"
      },
      "label": "unverified"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-01' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-01 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-01",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-02' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-02 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-02",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-03' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-03 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-03",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-04' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-04 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-04",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-05' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-05 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-05",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-06' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-06 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-06",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-07' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-07 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-07",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-08' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-08 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-08",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-09' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-09 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-09",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-10' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-10 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-10",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-11' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-11 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-11",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-12' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-12 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-12",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-13' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-13 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-13",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-14' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-14 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-14",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-15' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-15 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-15",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-16' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-16 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-16",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-17' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-17 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-17",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-18' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-18 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-18",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-19' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-19 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-19",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-20' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-20 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-20",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-21' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-21 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-21",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-22' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-22 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-22",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-23' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-23 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-23",
      "label": "log-entry-missing"
    },
    {
      "code": "log-entry-missing",
      "severity": "error",
      "what": "No fresh log entry for node 'app/svc-24' — its source changed but no justification entry exists.",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node app/svc-24 --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "node": "app/svc-24",
      "label": "log-entry-missing"
    },
    {
      "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 log add --node app/svc-01 --reason '<why this change was made>'",
  "groups": [
    {
      "code": "log-entry-missing",
      "label": "log-entry-missing",
      "aspect": null,
      "severity": "error",
      "subject": "24 nodes changed with no log entry",
      "why": "Node type 'service' has log_required: true — every source change needs a log entry capturing WHY. The requirement is a property of the node type plus a source change, independent of aspects; yg check stays red until a fresh entry exists.",
      "next": "yg log add --node <node> --reason '<why this change was made>'\nThen re-run yg check --approve. If you did not make this change, ask the user for the reason — never invent one.",
      "members": [
        24,
        25,
        26,
        27,
        28,
        29,
        30,
        31,
        32,
        33,
        34,
        35,
        36,
        37,
        38,
        39,
        40,
        41,
        42,
        43,
        44,
        45,
        46,
        47
      ]
    },
    {
      "code": "unverified",
      "label": "unverified",
      "aspect": null,
      "severity": "error",
      "subject": "24 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,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14,
        15,
        16,
        17,
        18,
        19,
        20,
        21,
        22,
        23
      ]
    },
    {
      "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": [
        48
      ]
    }
  ],
  "next": {
    "command": null,
    "text": "yg log add --node app/svc-01 --reason '<why this change was made>'",
    "target": {
      "node": "app/svc-01"
    },
    "cost": {
      "free": 0,
      "reviewerPairs": 0,
      "reviewerCalls": 0
    },
    "remaining": {
      "needsFix": 24,
      "fillable": 24,
      "needsUser": 0,
      "waitingOnReviewer": 0
    },
    "requiresUser": false,
    "then": "yg check --approve --only-deterministic"
  },
  "banner": null,
  "notes": [],
  "aborted": {
    "stage": "log-gate",
    "issues": [
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-01' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-01 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-01"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-02' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-02 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-02"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-03' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-03 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-03"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-04' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-04 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-04"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-05' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-05 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-05"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-06' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-06 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-06"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-07' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-07 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-07"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-08' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-08 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-08"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-09' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-09 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-09"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-10' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-10 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-10"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-11' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-11 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-11"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-12' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-12 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-12"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-13' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-13 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-13"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-14' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-14 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-14"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-15' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-15 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-15"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-16' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-16 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-16"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-17' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-17 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-17"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-18' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-18 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-18"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-19' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-19 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-19"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-20' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-20 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-20"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-21' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-21 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-21"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-22' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-22 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-22"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-23' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-23 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-23"
      },
      {
        "code": "log-entry-missing",
        "severity": "error",
        "what": "No log entry for node 'app/svc-24' — mandatory before its first verdicts are recorded.",
        "why": "Node type 'service' has log_required: true — every component of it needs a justification entry capturing WHY before verdicts are recorded over its code. This one has never been verified, so there is no earlier state it drifted from: its first entry is simply owed. Recording answers for the code as it stands, so it stops here and approves nothing this run until the entry exists.",
        "next": "yg log add --node app/svc-24 --reason '<why this change was made>'\nThen re-run yg check --approve --only-deterministic. If you did not make this change, ask the user for the reason — never invent one.",
        "node": "app/svc-24"
      }
    ]
  }
}
--- stderr
