{
  "schemaVersion": 1,
  "a": "16.2.2",
  "b": "7feefea6742f297526f75fbdfcafbb4ac6268c50",
  "refs": {
    "a": "v16.2.2",
    "b": "7feefea6742f297526f75fbdfcafbb4ac6268c50"
  },
  "version": "7feefea6742f297526f75fbdfcafbb4ac6268c50",
  "repo": "tutors-sdk/tutors-mono-repo",
  "history": {
    "asked": 6,
    "releases": [
      {
        "from": "v16.2.1",
        "to": "v16.2.2"
      },
      {
        "from": "v16.2.0",
        "to": "v16.2.1"
      },
      {
        "from": "v16.1.8",
        "to": "v16.2.0"
      },
      {
        "from": "v16.1.6",
        "to": "v16.1.8"
      },
      {
        "from": "v16.1.5",
        "to": "v16.1.6"
      },
      {
        "from": "v16.1.4",
        "to": "v16.1.5"
      }
    ]
  },
  "score": 0,
  "lost": 870,
  "floorBreached": true,
  "prs": [
    {
      "pr": 276,
      "sha": "790af8b6aca17da5632fa33f83ebf6e6f9bf4fea",
      "title": "fix(infra): consolidate .env to the repository root",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/276",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/ci.yml",
        "ARCHITECTURE.md",
        "CONTRIBUTING.md",
        "README.md",
        "apps/catalogue/svelte.config.js",
        "apps/catalogue/vite.config.ts",
        "apps/live/svelte.config.js",
        "apps/live/vite.config.ts",
        "apps/reader/svelte.config.js",
        "apps/reader/vite.config.ts",
        "apps/time/svelte.config.js",
        "apps/time/vite.config.ts"
      ],
      "churn": 49,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 16,
        "tests": 0,
        "ratio": 0,
        "packages": [
          {
            "package": "apps/catalogue",
            "production": 4,
            "tests": 0,
            "ratio": 0
          },
          {
            "package": "apps/live",
            "production": 4,
            "tests": 0,
            "ratio": 0
          },
          {
            "package": "apps/reader",
            "production": 4,
            "tests": 0,
            "ratio": 0
          },
          {
            "package": "apps/time",
            "production": 4,
            "tests": 0,
            "ratio": 0
          }
        ]
      },
      "reviewed": false,
      "points": 20,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #276 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/276",
          "pr": 276,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "tests",
          "why": "PR #276 changed 4 production lines in apps/catalogue with 0 test lines (0.00); 4 production lines in apps/live with 0 test lines (0.00); 4 production lines in apps/reader with 0 test lines (0.00); 4 production lines in apps/time with 0 test lines (0.00): below 0.2",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/276/files#diff-f59256a303b4024e8a8528f50c846374d823ee3e46c478100acfb0cb61cc4baf",
          "file": "apps/catalogue/svelte.config.js",
          "pr": 276,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #276 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/276/files#diff-f59256a303b4024e8a8528f50c846374d823ee3e46c478100acfb0cb61cc4baf",
          "file": "apps/catalogue/svelte.config.js",
          "pr": 276,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 279,
      "sha": "c5f6b792b441a12e58dd48b42ed7600d3ed8fedb",
      "title": "feat(deploy): make the container spec files Quay-compatible",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/279",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "Dockerfile",
        "compose.yaml",
        "deploy/README.md",
        "deploy/k8s/overlays/catalogue/kustomization.yaml",
        "deploy/k8s/overlays/live/kustomization.yaml",
        "deploy/k8s/overlays/reader/kustomization.yaml",
        "deploy/k8s/overlays/time/kustomization.yaml",
        "scripts/checks/conformance.ts",
        "tests/conformance/platform-conformance.test.ts"
      ],
      "churn": 144,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 20,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #279 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/279",
          "pr": 279,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #279 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/279/files#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557",
          "file": "Dockerfile",
          "pr": 279,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 278,
      "sha": "60531f1ac6f64f892abeb236afbe4e6fe3765289",
      "title": "test(reader): smoke the container with authentication enabled",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/278",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/ci.yml",
        "guides/TESTING.md",
        "tests/TESTING.md"
      ],
      "churn": 11,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 1,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #278 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/278",
          "pr": 278,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 282,
      "sha": "13e7f8869d60a4ed11c10a186acb3f5212cc0d2d",
      "title": "feat: deterministic responses for the release harness (HARNESS_NOW, /version, stable headers)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/282",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".env.example",
        ".github/workflows/ci.yml",
        "ARCHITECTURE.md",
        "Dockerfile",
        "apps/catalogue/README.md",
        "apps/catalogue/package.json",
        "apps/catalogue/src/hooks.server.ts",
        "apps/catalogue/src/routes/healthz/+server.ts",
        "apps/catalogue/src/routes/version/+server.ts",
        "apps/catalogue/svelte.config.js",
        "apps/live/README.md",
        "apps/live/package.json",
        "apps/live/src/hooks.server.ts",
        "apps/live/src/routes/healthz/+server.ts",
        "apps/live/src/routes/version/+server.ts",
        "apps/live/svelte.config.js",
        "apps/reader/README.md",
        "apps/reader/package.json",
        "apps/reader/src/hooks.server.ts",
        "apps/reader/src/routes/healthz/+server.ts",
        "apps/reader/src/routes/version/+server.ts",
        "apps/reader/svelte.config.js",
        "apps/time/package.json",
        "apps/time/src/hooks.server.ts",
        "apps/time/src/lib/server/db/submissionsRepository.ts",
        "apps/time/src/lib/server/services/AssignmentsSyncService.ts",
        "apps/time/src/routes/healthz/+server.ts",
        "apps/time/src/routes/version/+server.ts",
        "apps/time/svelte.config.js",
        "deploy/README.md",
        "packages/svelte/ui-navigators/src/footers/TutorsVersion.svelte",
        "packages/svelte/utils/runtime/package.json",
        "packages/svelte/utils/runtime/src/clock.ts",
        "packages/svelte/utils/runtime/src/index.ts",
        "packages/svelte/utils/runtime/src/version.ts",
        "pnpm-lock.yaml",
        "scripts/checks/conformance.ts",
        "scripts/checks/container-smoke.ts",
        "tests/TESTING.md",
        "tests/conformance/fixtures/faulty-image/server.mjs",
        "tests/conformance/platform-conformance.test.ts",
        "tests/unit/utils/runtime.test.ts",
        "vitest.aliases.ts"
      ],
      "churn": 541,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 204,
        "tests": 157,
        "ratio": 0.77,
        "packages": [
          {
            "package": "apps/catalogue",
            "production": 18,
            "tests": 157,
            "ratio": 8.72
          },
          {
            "package": "apps/live",
            "production": 18,
            "tests": 157,
            "ratio": 8.72
          },
          {
            "package": "apps/reader",
            "production": 16,
            "tests": 157,
            "ratio": 9.81
          },
          {
            "package": "apps/time",
            "production": 26,
            "tests": 157,
            "ratio": 6.04
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 3,
            "tests": 157,
            "ratio": 52.33
          },
          {
            "package": "packages/svelte/utils",
            "production": 123,
            "tests": 157,
            "ratio": 1.28
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #282 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/282",
          "pr": 282,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #282 changed Reader, Live, Catalogue, Time, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/282/files#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557",
          "file": "Dockerfile",
          "pr": 282,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 283,
      "sha": "8ad19f0d5c1981e4d1c9f5a37c67f919e4944fe5",
      "title": "feat(observability): stable log and metrics shape for release-harness A/A runs (M18, M19)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/283",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "apps/catalogue/src/hooks.server.ts",
        "apps/live/src/hooks.server.ts",
        "apps/reader/src/hooks.server.ts",
        "apps/time/src/hooks.server.ts",
        "deploy/README.md",
        "docs/LOCAL-CONTAINERS.md",
        "guides/TESTING.md",
        "packages/svelte/community/src/utils/supabase-client.ts",
        "packages/svelte/utils/logger/src/context.ts",
        "packages/svelte/utils/logger/src/contract.ts",
        "packages/svelte/utils/logger/src/errors.ts",
        "packages/svelte/utils/logger/src/formatter.ts",
        "packages/svelte/utils/logger/src/index.ts",
        "packages/svelte/utils/logger/src/logger.ts",
        "packages/svelte/utils/logger/src/outbound.ts",
        "packages/svelte/utils/logger/src/process.ts",
        "packages/svelte/utils/logger/src/request-logger.ts",
        "packages/svelte/utils/logger/src/types.ts",
        "scripts/checks/container-smoke.ts",
        "scripts/checks/observability.ts",
        "tests/conformance/fixtures/faulty-image/server.mjs",
        "tests/observability/observability-contracts.test.ts",
        "tests/unit/utils/logger-contract.test.ts",
        "tests/unit/utils/request-logger.test.ts"
      ],
      "churn": 1236,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 471,
        "tests": 447,
        "ratio": 0.95,
        "packages": [
          {
            "package": "apps/catalogue",
            "production": 6,
            "tests": 447,
            "ratio": 74.5
          },
          {
            "package": "apps/live",
            "production": 6,
            "tests": 447,
            "ratio": 74.5
          },
          {
            "package": "apps/reader",
            "production": 6,
            "tests": 447,
            "ratio": 74.5
          },
          {
            "package": "apps/time",
            "production": 6,
            "tests": 447,
            "ratio": 74.5
          },
          {
            "package": "packages/svelte/community",
            "production": 5,
            "tests": 447,
            "ratio": 89.4
          },
          {
            "package": "packages/svelte/utils",
            "production": 442,
            "tests": 447,
            "ratio": 1.01
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #283 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/283",
          "pr": 283,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #283 changed Reader, Live, Catalogue, Time, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/283/files#diff-681a6274b9d04d85e52f7f862f2dc5bcff947154b547367bdf9eaf0e3ab2b849",
          "file": "apps/catalogue/src/hooks.server.ts",
          "pr": 283,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 281,
      "sha": "aebfbaa93265ebed69b8afbcbdbaf587f6df9349",
      "title": "feat(k8s): Route and Ingress components with per-substrate variants",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/281",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/ci.yml",
        "deploy/README.md",
        "deploy/k8s/components/ingress/ingress.yaml",
        "deploy/k8s/components/ingress/kustomization.yaml",
        "deploy/k8s/components/route/kustomization.yaml",
        "deploy/k8s/components/route/route.yaml",
        "deploy/k8s/variants/kind/catalogue/kustomization.yaml",
        "deploy/k8s/variants/kind/live/kustomization.yaml",
        "deploy/k8s/variants/kind/reader/kustomization.yaml",
        "deploy/k8s/variants/kind/time/kustomization.yaml",
        "deploy/k8s/variants/openshift/catalogue/kustomization.yaml",
        "deploy/k8s/variants/openshift/live/kustomization.yaml",
        "deploy/k8s/variants/openshift/reader/kustomization.yaml",
        "deploy/k8s/variants/openshift/time/kustomization.yaml",
        "scripts/checks/conformance.ts",
        "scripts/checks/k8s-conformance.ts",
        "tests/conformance/platform-conformance.test.ts"
      ],
      "churn": 506,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 101,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #281 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/281",
          "pr": 281,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 280,
      "sha": "99a8fccc2f6364245cbe2ac3ef38b4fec3c78ac1",
      "title": "ci(release): tag release candidates and dispatch the release harness",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/280",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/CODEOWNERS",
        ".github/workflows/release-claims.yml",
        ".github/workflows/release-dispatch.yml",
        "guides/Release-Strategy.md",
        "guides/TESTING.md",
        "package.json",
        "release/README.md",
        "release/claims.yaml",
        "scripts/checks/release-claims.ts",
        "tests/conformance/release-claims.test.ts"
      ],
      "churn": 560,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 52,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #280 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/280",
          "pr": 280,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 143,
      "sha": "0d705cf7026d3388d74440168665d298a2db3165",
      "title": "feat(ci): container image build pipeline with Quay.io registry",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/143",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/image-build.yml",
        "Dockerfile",
        "deploy/README.md",
        "deploy/staging/.env.example",
        "deploy/staging/compose.yaml"
      ],
      "churn": 570,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #143 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/143",
          "pr": 143,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #143 changed Infrastructure but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/143/files#diff-a36c2b23480830b1d23bfca9ee3e98f172b1bee39d034c06780f9790dcd8c3f4",
          "file": ".github/workflows/image-build.yml",
          "pr": 143,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": null,
      "sha": "96e9e4d48acdf7a8a7021b97827c3378b80c21aa",
      "title": "Create images.yml",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/commit/96e9e4d48acdf7a8a7021b97827c3378b80c21aa",
      "direct": true,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/images.yml"
      ],
      "churn": 64,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "commit 96e9e4d \"Create images.yml\" reached main without a pull request, so nobody reviewed it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/commit/96e9e4d48acdf7a8a7021b97827c3378b80c21aa",
          "pr": null,
          "commit": "96e9e4d48acdf7a8a7021b97827c3378b80c21aa",
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 284,
      "sha": "bbe0244f591664e29598d4db0774bc07db776137",
      "title": "docs: add graphify knowledge-graph report of the monorepo",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/284",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".gitignore",
        ".graphifyignore",
        "docs/knowledge-graph/GRAPH_REPORT.md",
        "docs/knowledge-graph/README.md"
      ],
      "churn": 1283,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #284 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/284",
          "pr": 284,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 286,
      "sha": "7a548ec2362b4e080ab30bc6188f8808c23623e7",
      "title": "fix(community): count a first visit when the increments rpc returns no rows",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/286",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "packages/svelte/community/src/utils/supabase-client.ts",
        "tests/unit/community/learning-record-increments.test.ts"
      ],
      "churn": 68,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 3,
        "tests": 65,
        "ratio": 21.67,
        "packages": [
          {
            "package": "packages/svelte/community",
            "production": 3,
            "tests": 65,
            "ratio": 21.67
          }
        ]
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #286 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/286",
          "pr": 286,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 274,
      "sha": "0cbf10a973ce2bb722230fbb4c1be20e0d84d883",
      "title": "fix(reader): a course that does not exist showed \"500 Server Error\"",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/274",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "apps/reader/src/hooks.client.ts",
        "packages/svelte/course/src/course/index.ts",
        "packages/svelte/course/src/course/services/course.svelte.ts",
        "tests/unit/course/course-service-not-found.test.ts"
      ],
      "churn": 112,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 47,
        "tests": 65,
        "ratio": 1.38,
        "packages": [
          {
            "package": "apps/reader",
            "production": 6,
            "tests": 65,
            "ratio": 10.83
          },
          {
            "package": "packages/svelte/course",
            "production": 41,
            "tests": 65,
            "ratio": 1.59
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #274 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/274",
          "pr": 274,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #274 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/274/files#diff-5b44a0cebddcc23889fa11539c0347cbe7ca055b9a0ae01ecd54a7d1bdca08a9",
          "file": "apps/reader/src/hooks.client.ts",
          "pr": 274,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 275,
      "sha": "a35b5db14b7b9cd3fdf838fe51b8b7cdbd815f96",
      "title": "ci: run the create scaffolder's Deno tests, and count deno test steps as runners",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/275",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/ci.yml",
        ".github/workflows/rc-validation.yml",
        "scripts/checks/suite-health.ts",
        "tests/TESTING.md",
        "tests/suite-health/fixtures/runners-root/.github/workflows/ci.yml",
        "tests/suite-health/fixtures/runners-root/packages/cli/bench/orphan.test.js",
        "tests/suite-health/fixtures/runners-root/packages/cli/test/run.test.js",
        "tests/suite-health/known-findings.txt",
        "tests/suite-health/suite-health.test.ts"
      ],
      "churn": 92,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 31,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #275 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/275",
          "pr": 275,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 273,
      "sha": "52b72ed5985b7cded7e9149c25230bfa3d9356b6",
      "title": "fix(logger): a Supabase error's message never reached the log",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/273",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "packages/svelte/utils/logger/src/logger.ts",
        "tests/unit/utils/logger.test.ts"
      ],
      "churn": 22,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 13,
        "tests": 9,
        "ratio": 0.69,
        "packages": [
          {
            "package": "packages/svelte/utils",
            "production": 13,
            "tests": 9,
            "ratio": 0.69
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #273 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/273",
          "pr": 273,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #273 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/273/files#diff-eca79b176cbd5fad57cf983fb03e1e0dcb6121c27f352150e40279cbfa04b27d",
          "file": "packages/svelte/utils/logger/src/logger.ts",
          "pr": 273,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 270,
      "sha": "50ca3c554f828b81e463b1bd77dfeeac70f12320",
      "title": "fix(search): a hit in one-line content came back with no text",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/270",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "packages/jsr/model/src/services/search.ts",
        "tests/unit/model/search-mutations.test.ts",
        "tests/unit/model/search.test.ts"
      ],
      "churn": 21,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 2,
        "tests": 19,
        "ratio": 9.5,
        "packages": [
          {
            "package": "packages/jsr/model",
            "production": 2,
            "tests": 19,
            "ratio": 9.5
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #270 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/270",
          "pr": 270,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #270 changed Shared Packages, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/270/files#diff-2d45131110476140afc4c1fb134780a946b614d93104ca2fed2bfb48cbce642b",
          "file": "packages/jsr/model/src/services/search.ts",
          "pr": 270,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 272,
      "sha": "3a8ab370ac50b2553757a9a2627e355c7a90bbf7",
      "title": "fix(model): a learning object with order: 0 sorted last instead of first",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/272",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "packages/jsr/model/src/utils/lo-utils.ts",
        "tests/unit/model/lo-utils.test.ts"
      ],
      "churn": 28,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 10,
        "tests": 18,
        "ratio": 1.8,
        "packages": [
          {
            "package": "packages/jsr/model",
            "production": 10,
            "tests": 18,
            "ratio": 1.8
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #272 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/272",
          "pr": 272,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #272 changed Shared Packages, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/272/files#diff-e4e6c89d6e93479833f4913d10aa9f65c29f8570db8a0af50868037b8d656ebd",
          "file": "packages/jsr/model/src/utils/lo-utils.ts",
          "pr": 272,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 269,
      "sha": "dee87dcdfb14d1653b11670304e991ccb2418f11",
      "title": "ci: make the three type-check steps blocking",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/269",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/PULL_REQUEST_TEMPLATE.md",
        ".github/workflows/ci.yml",
        "CONTRIBUTING.md",
        "apps/reader/src/routes/(course-reader)/llm/[courseid]/+page.ts",
        "apps/reader/src/routes/(course-reader)/whiteboard/[courseid]/[...loid]/+page.ts",
        "etc/tutors-model-lib.api.md",
        "guides/TESTING-OVERVIEW.md",
        "guides/TESTING.md",
        "package.json",
        "packages/jsr/model/src/utils/markdown-plugins.ts",
        "packages/jsr/model/src/utils/markdown-utils.ts"
      ],
      "churn": 42,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 20,
        "tests": 0,
        "ratio": 0,
        "packages": [
          {
            "package": "apps/reader",
            "production": 8,
            "tests": 0,
            "ratio": 0
          },
          {
            "package": "packages/jsr/model",
            "production": 12,
            "tests": 0,
            "ratio": 0
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #269 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/269",
          "pr": 269,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "tests",
          "why": "PR #269 changed 8 production lines in apps/reader with 0 test lines (0.00); 12 production lines in packages/jsr/model with 0 test lines (0.00): below 0.2",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/269/files#diff-eb38d340e5f8cf75f24da0f7604a5cfc8c2ad77ed33e1672c354a63f9322fe2c",
          "file": "packages/jsr/model/src/utils/markdown-plugins.ts",
          "pr": 269,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 271,
      "sha": "6feb90b2ea332e97f88d3f7bbbaedcdc9fc5360f",
      "title": "fix(search): wrong line, fence and language from the second match on",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/271",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "packages/jsr/model/src/services/search.ts",
        "tests/unit/model/search-mutations.test.ts",
        "tests/unit/model/search.test.ts"
      ],
      "churn": 83,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 20,
        "tests": 63,
        "ratio": 3.15,
        "packages": [
          {
            "package": "packages/jsr/model",
            "production": 20,
            "tests": 63,
            "ratio": 3.15
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #271 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/271",
          "pr": 271,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #271 changed Shared Packages, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/271/files#diff-2d45131110476140afc4c1fb134780a946b614d93104ca2fed2bfb48cbce642b",
          "file": "packages/jsr/model/src/services/search.ts",
          "pr": 271,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 277,
      "sha": "d5b9c5787eaa2c7c2171f3977484b02938eb9c52",
      "title": "test(bdd): make the feature files executable, bound to product code",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/277",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "guides/EARS-METHODOLOGY.md",
        "guides/PERSONAS.md",
        "guides/TESTING-OVERVIEW.md",
        "guides/TESTING.md",
        "guides/specifications/README.md",
        "guides/specifications/accessibility.md",
        "guides/specifications/analytics-lab.md",
        "guides/specifications/auth-integration.md",
        "guides/specifications/authentication.md",
        "guides/specifications/calendar-analytics.md",
        "guides/specifications/course-authoring.md",
        "guides/specifications/course-discovery.md",
        "guides/specifications/error-handling.md",
        "guides/specifications/lab-analytics.md",
        "guides/specifications/live-presence.md",
        "guides/specifications/offline-resilience.md",
        "guides/specifications/presence-tracking.md",
        "guides/specifications/responsive-layout.md",
        "guides/specifications/search-content.md",
        "guides/specifications/student-engagement.md",
        "guides/specifications/theme-customisation.md",
        "guides/specifications/whitelist-management.md",
        "package.json",
        "pnpm-lock.yaml",
        "scripts/checks/suite-health.ts",
        "tests/TESTING.md",
        "tests/bdd/features/course/course-loading.feature",
        "tests/bdd/features/course/course-navigation.feature",
        "tests/bdd/features/developer/auth-integration.feature",
        "tests/bdd/features/developer/i18n-localisation.feature",
        "tests/bdd/features/developer/theme-customisation.feature",
        "tests/bdd/features/instructor/analytics-calendar.feature",
        "tests/bdd/features/instructor/analytics-lab.feature",
        "tests/bdd/features/instructor/course-authoring.feature",
        "tests/bdd/features/instructor/student-engagement.feature",
        "tests/bdd/features/instructor/whitelist-management.feature",
        "tests/bdd/features/live/presence-tracking.feature",
        "tests/bdd/features/shared/authentication.feature",
        "tests/bdd/features/shared/error-handling.feature",
        "tests/bdd/features/shared/offline-resilience.feature",
        "tests/bdd/features/shared/responsive-layout.feature",
        "tests/bdd/features/shared/theming.feature",
        "tests/bdd/features/student/accessibility.feature",
        "tests/bdd/features/student/course-discovery.feature",
        "tests/bdd/features/student/lab-interaction.feature",
        "tests/bdd/features/student/learning-progress.feature",
        "tests/bdd/features/student/live-presence.feature",
        "tests/bdd/features/student/search-content.feature",
        "tests/bdd/features/time/calendar-analytics.feature",
        "tests/bdd/features/time/lab-analytics.feature",
        "tests/bdd/steps/course/course-loading.steps.ts",
        "tests/bdd/steps/course/course-navigation.steps.ts",
        "tests/bdd/steps/developer/auth-integration.steps.ts",
        "tests/bdd/steps/developer/i18n-localisation.steps.ts",
        "tests/bdd/steps/developer/theme-customisation.steps.ts",
        "tests/bdd/steps/instructor/analytics-calendar.steps.ts",
        "tests/bdd/steps/instructor/analytics-lab.steps.ts",
        "tests/bdd/steps/instructor/course-authoring.steps.ts",
        "tests/bdd/steps/instructor/student-engagement.steps.ts",
        "tests/bdd/steps/instructor/whitelist-management.steps.ts",
        "tests/bdd/steps/live/presence-tracking.steps.ts",
        "tests/bdd/steps/shared/authentication.steps.ts",
        "tests/bdd/steps/shared/error-handling.steps.ts",
        "tests/bdd/steps/shared/offline-resilience.steps.ts",
        "tests/bdd/steps/shared/responsive-layout.steps.ts",
        "tests/bdd/steps/shared/theming.steps.ts",
        "tests/bdd/steps/student/accessibility.steps.ts",
        "tests/bdd/steps/student/course-discovery.steps.ts",
        "tests/bdd/steps/student/lab-interaction.steps.ts",
        "tests/bdd/steps/student/learning-progress.steps.ts",
        "tests/bdd/steps/student/live-presence.steps.ts",
        "tests/bdd/steps/student/search-content.steps.ts",
        "tests/bdd/steps/time/calendar-analytics.steps.ts",
        "tests/bdd/steps/time/lab-analytics.steps.ts",
        "tests/bdd/support/connect.ts",
        "tests/bdd/support/course.ts",
        "tests/bdd/support/fixtures.ts",
        "tests/bdd/support/reader-loading.ts",
        "tests/bdd/support/reader.ts",
        "tests/bdd/support/runes-stub.ts",
        "tests/bdd/support/supabase-recorder.ts",
        "tests/bdd/support/svelte-runes-shim.ts",
        "tests/bdd/support/theme.ts",
        "tests/bdd/support/time.ts",
        "tests/bdd/support/world.ts",
        "tests/suite-health/fixtures/features-root/specs/bound.feature",
        "tests/suite-health/fixtures/features-root/specs/drops-steps.feature",
        "tests/suite-health/fixtures/features-root/tests/bound.steps.js",
        "tests/suite-health/known-findings.txt",
        "tests/suite-health/suite-health.test.ts"
      ],
      "churn": 5559,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 4888,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #277 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/277",
          "pr": 277,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 293,
      "sha": "118eb8a343fb5309eb19983a48f121cb3448d81f",
      "title": "fix(course): distinguish a 404 from an unreachable host when loading a course",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/293",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "apps/reader/src/hooks.client.ts",
        "packages/svelte/course/src/course/index.ts",
        "packages/svelte/course/src/course/services/course.svelte.ts",
        "tests/unit/course/course-service-not-found.test.ts"
      ],
      "churn": 78,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 42,
        "tests": 36,
        "ratio": 0.86,
        "packages": [
          {
            "package": "apps/reader",
            "production": 8,
            "tests": 36,
            "ratio": 4.5
          },
          {
            "package": "packages/svelte/course",
            "production": 34,
            "tests": 36,
            "ratio": 1.06
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #293 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/293",
          "pr": 293,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #293 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/293/files#diff-5b44a0cebddcc23889fa11539c0347cbe7ca055b9a0ae01ecd54a7d1bdca08a9",
          "file": "apps/reader/src/hooks.client.ts",
          "pr": 293,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 302,
      "sha": "38713255bc47a10d574ce8f29ee5cdda42669218",
      "title": "docs(quiz): state that quizzes are a formative self-check, not assessment",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/302",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "packages/svelte/quiz/README.md"
      ],
      "churn": 23,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #302 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/302",
          "pr": 302,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #302 changed Reader but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/302/files#diff-22d70ca7e354eea60e156d8536e28c645b1beef66a935ecd4e9770fa168f8364",
          "file": "packages/svelte/quiz/README.md",
          "pr": 302,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 295,
      "sha": "4a227490e33d6304ad83b4fff31fe2e43ec5b77c",
      "title": "test(reader): smoke the built server for ESM globals and 5xx on /auth",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/295",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/ci.yml",
        "guides/TESTING-OVERVIEW.md",
        "guides/TESTING.md",
        "package.json",
        "scripts/checks/server-smoke.ts",
        "tests/TESTING.md",
        "tests/conformance/server-smoke.test.ts"
      ],
      "churn": 273,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 80,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #295 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/295",
          "pr": 295,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 303,
      "sha": "e5623bd548d8a13faa3ecfbf66ac4a3d42724d53",
      "title": "feat(images): promote the judged rc image on a final tag instead of rebuilding",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/303",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/image-build.yml",
        "deploy/README.md",
        "guides/Release-Strategy.md",
        "package.json",
        "scripts/promote-image.ts",
        "tests/conformance/promote-image.test.ts"
      ],
      "churn": 1039,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 410,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #303 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/303",
          "pr": 303,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #303 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/303/files#diff-a36c2b23480830b1d23bfca9ee3e98f172b1bee39d034c06780f9790dcd8c3f4",
          "file": ".github/workflows/image-build.yml",
          "pr": 303,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 297,
      "sha": "f8ee5d252d5da96ed98e7ac44fdd94d332fd35d2",
      "title": "fix(logger): keep variable data out of log messages and guard it with a test",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/297",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "apps/reader/src/hooks.server.ts",
        "deploy/README.md",
        "packages/svelte/community/src/services/catalogue.ts",
        "packages/svelte/community/src/utils/supabase-client.ts",
        "packages/svelte/connect/src/services/connect.svelte.ts",
        "packages/svelte/connect/src/services/supabaseProfile.svelte.ts",
        "packages/svelte/course/src/course/services/course.svelte.ts",
        "scripts/checks/observability.ts",
        "tests/bdd/features/shared/error-handling.feature",
        "tests/bdd/steps/shared/offline-resilience.steps.ts",
        "tests/observability/observability-contracts.test.ts",
        "tests/unit/community/catalogue-service.test.ts",
        "tests/unit/course/course-service-not-found.test.ts"
      ],
      "churn": 185,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 38,
        "tests": 102,
        "ratio": 2.68,
        "packages": [
          {
            "package": "apps/reader",
            "production": 2,
            "tests": 102,
            "ratio": 51
          },
          {
            "package": "packages/svelte/community",
            "production": 9,
            "tests": 102,
            "ratio": 11.33
          },
          {
            "package": "packages/svelte/connect",
            "production": 4,
            "tests": 102,
            "ratio": 25.5
          },
          {
            "package": "packages/svelte/course",
            "production": 23,
            "tests": 102,
            "ratio": 4.43
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #297 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/297",
          "pr": 297,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #297 changed Reader, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/297/files#diff-d6d421ccc99e28b6214f7df730798547515a524700fe6758ff2aaa6b7cdd8856",
          "file": "apps/reader/src/hooks.server.ts",
          "pr": 297,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 299,
      "sha": "020cfdccaee3df17f22673341e1efb2a9d2c803d",
      "title": "chore(ci): include the time app in the build check and the registry wait",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/299",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/rc-validation.yml",
        ".github/workflows/release-dispatch.yml"
      ],
      "churn": 4,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #299 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/299",
          "pr": 299,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #299 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/299/files#diff-5120444e4d184841565d20ffc18b895d7d4d3f1ef63c38671080d41fa47759d9",
          "file": ".github/workflows/release-dispatch.yml",
          "pr": 299,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 287,
      "sha": "0554f1a8578d363038954afd7e68fc955c9eb845",
      "title": "chore(infra): add ESLint no-console rule and standardise error catching",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/287",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "eslint.config.mjs",
        "packages/jsr/create/src/cli.ts",
        "packages/jsr/gen/src/services/course-builder.ts",
        "packages/jsr/gen/src/templates/template-downloader.ts",
        "packages/jsr/gen/src/templates/template-engine.ts",
        "packages/jsr/gen/src/tutors.ts",
        "packages/jsr/gen/src/utils/file-utils.ts",
        "packages/jsr/gen/src/utils/lr-utils.ts",
        "packages/jsr/model/src/utils/course-utils.ts",
        "packages/jsr/time/src/services/course-time.ts",
        "packages/jsr/tutors-lite/main.ts",
        "packages/jsr/tutors/main.ts",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/NotebookCodeEditor.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/whiteboard/WhiteboardViewer.svelte",
        "scripts/api-surface.ts",
        "scripts/checks/bundle-budget.ts",
        "scripts/checks/container-smoke.ts",
        "scripts/checks/dependency-audit.ts",
        "scripts/checks/generator-diff.ts",
        "scripts/checks/k8s-conformance.ts",
        "scripts/checks/knip.ts",
        "scripts/checks/lighthouse.ts",
        "scripts/checks/load-test.ts",
        "scripts/checks/release-claims.ts",
        "scripts/checks/test-time-budget.ts",
        "scripts/checks/tz-matrix.ts",
        "scripts/generate-okf.ts",
        "tests/conformance/fixtures/faulty-image/server.mjs",
        "tests/e2e-stack/fixture-course/build.ts",
        "tests/e2e-stack/fixture-course/serve.mjs",
        "tests/e2e-stack/ratchet.mjs",
        "tests/e2e/accessibility.spec.ts",
        "tests/performance/k6/lib/reader-traffic.js",
        "tests/release/scripts/compare-artifacts.ts",
        "tests/release/scripts/compare-reader-builds.ts",
        "tests/release/scripts/fetch-reference-course.ts",
        "tests/release/scripts/generate-baseline.ts",
        "tests/release/scripts/generate-candidate.ts",
        "tests/release/scripts/performance-benchmark.ts",
        "tests/release/scripts/run-release-tests.ts",
        "tests/release/scripts/smoke-test-preview.ts",
        "tests/release/scripts/visual-regression.ts"
      ],
      "churn": 636,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 111,
        "tests": 288,
        "ratio": 2.59,
        "packages": [
          {
            "package": "packages/jsr/create",
            "production": 10,
            "tests": 288,
            "ratio": 28.8
          },
          {
            "package": "packages/jsr/gen",
            "production": 75,
            "tests": 288,
            "ratio": 3.84
          },
          {
            "package": "packages/jsr/model",
            "production": 5,
            "tests": 288,
            "ratio": 57.6
          },
          {
            "package": "packages/jsr/time",
            "production": 2,
            "tests": 288,
            "ratio": 144
          },
          {
            "package": "packages/jsr/tutors",
            "production": 4,
            "tests": 288,
            "ratio": 72
          },
          {
            "package": "packages/jsr/tutors-lite",
            "production": 4,
            "tests": 288,
            "ratio": 72
          },
          {
            "package": "packages/svelte/ui-components",
            "production": 11,
            "tests": 288,
            "ratio": 26.18
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #287 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/287",
          "pr": 287,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #287 changed Shared Packages, Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/287/files#diff-af1518e1bffb8dbf88329d41c82afdca678d13ad8fea29dca4e6593d51972c9e",
          "file": "packages/jsr/create/src/cli.ts",
          "pr": 287,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 301,
      "sha": "bfc05a4f34d37312410873edc2da499ca6232e03",
      "title": "feat(testing): EARS Rule ids, audit gate and claims link (slice 1 of #214)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/301",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".claude/skills/ears-gherkin-dev/SKILL.md",
        ".claude/skills/ears-gherkin-dev/references/audit-codes.md",
        ".claude/skills/ears-gherkin-dev/references/ears-rules.md",
        ".claude/skills/ears-gherkin-dev/references/vitest-cucumber.md",
        ".github/workflows/ci.yml",
        "guides/EARS-METHODOLOGY.md",
        "guides/TESTING.md",
        "package.json",
        "scripts/checks/ears-audit.ts",
        "scripts/checks/lib/gherkin-rules.ts",
        "scripts/checks/lib/rules-index.ts",
        "scripts/checks/release-claims.ts",
        "scripts/release-claims-draft.ts",
        "tests/bdd/ears-audit-baseline.txt",
        "tests/bdd/ears-retired-rule-ids.txt",
        "tests/bdd/features/course/course-loading.feature",
        "tests/bdd/features/course/course-navigation.feature",
        "tests/bdd/features/shared/authentication.feature",
        "tests/bdd/features/student/course-discovery.feature",
        "tests/bdd/features/student/search-content.feature",
        "tests/bdd/steps/course/course-loading.steps.ts",
        "tests/bdd/steps/course/course-navigation.steps.ts",
        "tests/bdd/steps/shared/authentication.steps.ts",
        "tests/bdd/steps/student/course-discovery.steps.ts",
        "tests/bdd/steps/student/search-content.steps.ts",
        "tests/conformance/release-claims-draft.test.ts",
        "tests/conformance/release-claims.test.ts",
        "tests/suite-health/ears-audit.test.ts",
        "tests/suite-health/fixtures/ears-audit/root/tests/bdd/features/student/bad.feature",
        "tests/suite-health/fixtures/ears-audit/root/tests/bdd/features/student/binding.feature",
        "tests/suite-health/fixtures/ears-audit/root/tests/bdd/features/student/good.feature",
        "tests/suite-health/fixtures/ears-audit/root/tests/bdd/features/student/legacy.feature",
        "tests/suite-health/fixtures/ears-audit/root/tests/bdd/features/student/unbound.feature",
        "tests/suite-health/fixtures/ears-audit/root/tests/bdd/steps/student/binding.steps.js",
        "tests/suite-health/fixtures/ears-audit/root/tests/bdd/steps/student/good.steps.js"
      ],
      "churn": 2643,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 1504,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #301 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/301",
          "pr": 301,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 306,
      "sha": "c3740eb8cf86a70c06eeabf6ab0c73d59021946f",
      "title": "fix(lint): use process streams for script output (no-console)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/306",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "scripts/checks/server-smoke.ts",
        "scripts/promote-image.ts"
      ],
      "churn": 32,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #306 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/306",
          "pr": 306,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 305,
      "sha": "994698f8697ca02cb71676fdfba60fd3e8f6f412",
      "title": "ci: remove images.yml, image-build.yml already publishes the images",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/305",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/images.yml"
      ],
      "churn": 64,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #305 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/305",
          "pr": 305,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 298,
      "sha": "d7ebc1700b043209ef7e83c812cd7bb9b4234bf8",
      "title": "feat(deploy): pin overlays by digest and tell the release harness after a deploy",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/298",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/deploy.yml",
        "deploy/README.md",
        "deploy/k8s/overlays/catalogue/kustomization.yaml",
        "deploy/k8s/overlays/live/kustomization.yaml",
        "deploy/k8s/overlays/reader/kustomization.yaml",
        "deploy/k8s/overlays/time/kustomization.yaml",
        "guides/Release-Strategy.md",
        "knip.json",
        "package.json",
        "scripts/checks/conformance.ts",
        "scripts/checks/deploy-pins.ts",
        "scripts/checks/k8s-conformance.ts",
        "scripts/checks/lib/registry.ts",
        "scripts/deploy-pin.ts",
        "scripts/promote-image.ts",
        "tests/conformance/deploy-pins.test.ts",
        "tests/conformance/platform-conformance.test.ts"
      ],
      "churn": 940,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 298,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #298 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/298",
          "pr": 298,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 296,
      "sha": "6b72950f966054fe17fa0fb16c8a7ae2e26b3bd4",
      "title": "fix(runtime): route the course calendar through the clock seam; keep the commit off /_app/version.json",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/296",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/ci.yml",
        "ARCHITECTURE.md",
        "apps/catalogue/svelte.config.js",
        "apps/live/svelte.config.js",
        "apps/reader/svelte.config.js",
        "apps/time/svelte.config.js",
        "deploy/README.md",
        "etc/tutors-model-lib.api.md",
        "package.json",
        "packages/jsr/model/src/utils/course-utils.ts",
        "packages/svelte/course/package.json",
        "packages/svelte/course/src/course/services/lo-tree.ts",
        "pnpm-lock.yaml",
        "scripts/checks/build-identity.ts",
        "scripts/checks/container-smoke.ts",
        "tests/TESTING.md",
        "tests/conformance/build-identity.test.ts",
        "tests/unit/course/lo-tree-clock.test.ts",
        "tests/unit/model/course-calendar.test.ts"
      ],
      "churn": 672,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 48,
        "tests": 285,
        "ratio": 5.94,
        "packages": [
          {
            "package": "apps/catalogue",
            "production": 8,
            "tests": 285,
            "ratio": 35.63
          },
          {
            "package": "apps/live",
            "production": 8,
            "tests": 285,
            "ratio": 35.63
          },
          {
            "package": "apps/reader",
            "production": 8,
            "tests": 285,
            "ratio": 35.63
          },
          {
            "package": "apps/time",
            "production": 8,
            "tests": 285,
            "ratio": 35.63
          },
          {
            "package": "packages/jsr/model",
            "production": 11,
            "tests": 285,
            "ratio": 25.91
          },
          {
            "package": "packages/svelte/course",
            "production": 5,
            "tests": 285,
            "ratio": 57
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #296 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/296",
          "pr": 296,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #296 changed Reader, Live, Catalogue, Time, Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/296/files#diff-f59256a303b4024e8a8528f50c846374d823ee3e46c478100acfb0cb61cc4baf",
          "file": "apps/catalogue/svelte.config.js",
          "pr": 296,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 300,
      "sha": "66ad056c2ade2ba61bbfe1477f43ce2477d90ffd",
      "title": "feat(release): migration expand/contract checks and artefact-tagged changelog entries",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/300",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/PULL_REQUEST_TEMPLATE.md",
        ".github/workflows/release-claims.yml",
        "CHANGELOG.md",
        "CONTRIBUTING.md",
        "guides/MIGRATIONS.md",
        "guides/Release-Strategy.md",
        "guides/TESTING.md",
        "package.json",
        "release/README.md",
        "release/claims.yaml",
        "scripts/checks/migrations.ts",
        "scripts/checks/release-claims.ts",
        "supabase/migrations/README.md",
        "tests/conformance/migrations.test.ts",
        "tests/conformance/release-claims.test.ts"
      ],
      "churn": 774,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 150,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #300 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/300",
          "pr": 300,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #300 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/300/files#diff-ff0e2e3f4201f92768e9bdc38a009be8752ed8fd07ae8cddcd96c3cfbdea18c8",
          "file": "supabase/migrations/README.md",
          "pr": 300,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 307,
      "sha": "1af2b35945fb290b6c5087b77e7ab1ddb597d234",
      "title": "feat(release): pnpm release:harness builds the harness dispatch from a local checkout",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/307",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "guides/Release-Strategy.md",
        "package.json",
        "scripts/release-harness.ts",
        "tests/conformance/release-harness.test.ts"
      ],
      "churn": 994,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 388,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #307 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/307",
          "pr": 307,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 308,
      "sha": "c14c3ee20098da06a81fe1e83bf6b0ac5a16c4bc",
      "title": "feat(release): publish rules.json and let a claim cite its Rule with a rule field",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/308",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "guides/EARS-METHODOLOGY.md",
        "package.json",
        "release/README.md",
        "release/claims.yaml",
        "scripts/checks/release-claims.ts",
        "scripts/release-claims-draft.ts",
        "scripts/release-rules.ts",
        "tests/conformance/release-claims-draft.test.ts",
        "tests/conformance/release-claims.test.ts",
        "tests/conformance/release-rules.test.ts"
      ],
      "churn": 491,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 249,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #308 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/308",
          "pr": 308,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 309,
      "sha": "77fbbd76e47fc1ffa3f65461534c17ce646b295e",
      "title": "fix(release): accept the harness's 19 claim artefacts and correct what an older harness does with rule:",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/309",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "CHANGELOG.md",
        "CONTRIBUTING.md",
        "guides/EARS-METHODOLOGY.md",
        "release/README.md",
        "release/claims.yaml",
        "scripts/checks/release-claims.ts",
        "scripts/release-claims-draft.ts",
        "tests/conformance/release-claims-draft.test.ts",
        "tests/conformance/release-claims.test.ts"
      ],
      "churn": 116,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 68,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #309 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/309",
          "pr": 309,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 310,
      "sha": "3f38f2ef9dd89a73c4d2c63b38d0eb9d8e03b4d9",
      "title": "feat(release): send digests, rules_url and 5 runs to the harness (time digest on deploy)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/310",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/deploy.yml",
        ".github/workflows/release-dispatch.yml",
        "guides/Release-Strategy.md",
        "scripts/release-harness.ts",
        "tests/conformance/release-harness.test.ts"
      ],
      "churn": 258,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 75,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #310 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/310",
          "pr": 310,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #310 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/310/files#diff-28802fbf11c83a2eee09623fb192785e7ca92a3f40602a517c011b947a1822d3",
          "file": ".github/workflows/deploy.yml",
          "pr": 310,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 135,
      "sha": "5d7283e7b83bbf0308547e9d00ef333dc833c6e2",
      "title": "feat(observability): local Grafana stack for Tutors learning insights",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/135",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".gitignore",
        "observability/grafana/.env.example",
        "observability/grafana/README.md",
        "observability/grafana/dashboards/tutors-overview.json",
        "observability/grafana/docker-compose.yml",
        "observability/grafana/native/datasource-local.yml",
        "observability/grafana/provisioning/dashboards/dashboards.yml",
        "observability/grafana/provisioning/datasources/datasources.yml",
        "observability/grafana/sql/grafana_reader.sql",
        "observability/grafana/sql/reporting_views.sql",
        "proposal.md"
      ],
      "churn": 732,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #135 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/135",
          "pr": 135,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #135 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/135/files#diff-c04a7d8d1a0926485b57aad087bd2ad9f6add9a5bdbb26a54faa4b504485f951",
          "file": "observability/grafana/.env.example",
          "pr": 135,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 312,
      "sha": "623d6f50931d3b57a7a38625402d5ae5ee795017",
      "title": "feat(release): post the harness verdict on the release PR (re-open of #311, which merged into #310's branch)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/312",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".github/workflows/release-dispatch.yml",
        ".github/workflows/release-harness-report.yml",
        "guides/Release-Strategy.md",
        "package.json",
        "release/README.md",
        "scripts/release-report-comment.ts",
        "tests/conformance/release-report-comment.test.ts"
      ],
      "churn": 1347,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 471,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #312 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/312",
          "pr": 312,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 313,
      "sha": "b23f251192c2e711d8065cdd9c954245a632cdc9",
      "title": "feat(ui): rebuild Tutors with the Paper design system",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/313",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        ".claude/skills/ears-gherkin-dev/SKILL.md",
        ".claude/skills/ears-gherkin-dev/references/audit-codes.md",
        ".github/workflows/ci.yml",
        "CONTRIBUTING.md",
        "DESIGN.md",
        "apps/catalogue/src/app.css",
        "apps/catalogue/src/routes/+page.svelte",
        "apps/catalogue/tests/e2e/smoke.spec.ts",
        "apps/catalogue/vite.config.ts",
        "apps/live/src/app.css",
        "apps/live/src/routes/+page.svelte",
        "apps/live/src/routes/[courseid]/+page.svelte",
        "apps/live/tests/e2e/smoke.spec.ts",
        "apps/live/vite.config.ts",
        "apps/reader/package.json",
        "apps/reader/playwright.config.ts",
        "apps/reader/src/app.css",
        "apps/reader/src/app.html",
        "apps/reader/src/routes/(auth)/auth/SigninWithGithub.svelte",
        "apps/reader/src/routes/(course-reader)/+layout.svelte",
        "apps/reader/src/routes/(course-reader)/llm/[courseid]/+page.svelte",
        "apps/reader/src/routes/(course-reader)/notebook/[courseid]/[...loid]/+page.svelte",
        "apps/reader/src/routes/(course-reader)/search/[courseid]/+page.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/+page.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/ActivityTable.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/CalendarByDayTable.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/CalendarHeatmap.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/HeatMaps.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/Heatmap.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/LabByStepTable.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/StudentCalendarTable.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/StudentLabTable.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/Tables.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/heat.ts",
        "apps/reader/src/routes/(create)/create/+page.svelte",
        "apps/reader/src/routes/(create)/create/CourseInfoStep.svelte",
        "apps/reader/src/routes/(create)/create/DownloadStep.svelte",
        "apps/reader/src/routes/(create)/create/FileTree.svelte",
        "apps/reader/src/routes/(create)/create/PreviewStep.svelte",
        "apps/reader/src/routes/(create)/create/StepIndicator.svelte",
        "apps/reader/src/routes/(create)/create/StructureStep.svelte",
        "apps/reader/src/routes/(home)/+page.svelte",
        "apps/reader/src/routes/(home)/CourseList.svelte",
        "apps/reader/src/routes/(home)/CourseVisitCard.svelte",
        "apps/reader/src/routes/(home)/Links.svelte",
        "apps/reader/src/routes/(home)/TutorsInfo.svelte",
        "apps/reader/src/routes/(home)/Welcome.svelte",
        "apps/reader/static/excalidraw-editor.html",
        "apps/reader/tests/e2e/accessibility.spec.ts",
        "apps/reader/tests/e2e/content-locks.spec.ts",
        "apps/reader/tests/e2e/course-tools.spec.ts",
        "apps/reader/tests/e2e/learning-activities.spec.ts",
        "apps/reader/tests/e2e/preferences-and-themes.spec.ts",
        "apps/reader/tests/e2e/reading.spec.ts",
        "apps/reader/tests/e2e/resource-cards.spec.ts",
        "apps/reader/tests/e2e/search.spec.ts",
        "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "apps/reader/tests/e2e/smoke.spec.ts",
        "apps/reader/tests/e2e/support.ts",
        "apps/reader/vite.config.ts",
        "apps/time/package.json",
        "apps/time/src/app.css",
        "apps/time/src/app.html",
        "apps/time/src/lib/components/CourseCard.svelte",
        "apps/time/src/lib/components/CourseIdDialog.svelte",
        "apps/time/src/lib/components/MediansView.svelte",
        "apps/time/src/lib/components/Navigation.svelte",
        "apps/time/src/lib/components/PinDialog.svelte",
        "apps/time/src/lib/components/StudentAvatar.svelte",
        "apps/time/src/lib/components/StudentCard.svelte",
        "apps/time/src/lib/components/calendar/CalendarGrid.svelte",
        "apps/time/src/lib/components/calendar/CalendarHeatmap.svelte",
        "apps/time/src/lib/components/calendar/CalendarMedianGrid.svelte",
        "apps/time/src/lib/components/labs/LabsGrid.svelte",
        "apps/time/src/lib/components/labs/LabsMedianGrid.svelte",
        "apps/time/src/lib/components/tables/AssignmentsTable.svelte",
        "apps/time/src/lib/components/tables/CalendarByDayTable.svelte",
        "apps/time/src/lib/components/tables/CalendarTable.svelte",
        "apps/time/src/lib/components/tables/LabByStepTable.svelte",
        "apps/time/src/lib/components/tables/LearningRecordsTable.svelte",
        "apps/time/src/lib/components/tables/StudentCalendarTable.svelte",
        "apps/time/src/lib/components/tables/StudentLabTable.svelte",
        "apps/time/src/routes/+layout.svelte",
        "apps/time/src/routes/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/assignments/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/calendar/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/calendar/raw/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/lab/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/lab/learning-records/+page.svelte",
        "apps/time/src/routes/[courseid]/+layout.svelte",
        "apps/time/src/routes/[courseid]/[studentid]/+page.svelte",
        "apps/time/static/OpenDyslexic-Bold.woff2",
        "apps/time/static/OpenDyslexic-BoldItalic.woff2",
        "apps/time/static/OpenDyslexic-Italic.woff2",
        "apps/time/static/OpenDyslexic-Regular.woff2",
        "apps/time/vite.config.ts",
        "guides/EARS-METHODOLOGY.md",
        "guides/TESTING-OVERVIEW.md",
        "guides/TESTING.md",
        "guides/specifications/README.md",
        "package.json",
        "packages/svelte/course/src/markdown/actions/copy-code-action.ts",
        "packages/svelte/runes/src/index.svelte.ts",
        "packages/svelte/themes/src/icons/easter-icons.ts",
        "packages/svelte/themes/src/icons/festive-icons.ts",
        "packages/svelte/themes/src/icons/fluent-icons.ts",
        "packages/svelte/themes/src/icons/hero-icons.ts",
        "packages/svelte/themes/src/services/themes.svelte.ts",
        "packages/svelte/themes/src/styles/card-styles.ts",
        "packages/svelte/themes/src/styles/classic.css",
        "packages/svelte/themes/src/styles/paper-tokens.css",
        "packages/svelte/themes/src/styles/paper-ui.css",
        "packages/svelte/themes/src/styles/theme-overrides.css",
        "packages/svelte/themes/src/types.ts",
        "packages/svelte/ui-components/package.json",
        "packages/svelte/ui-components/src/_safelist.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/Note.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/Podcast.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/QuizLo.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/Video.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/WidthToggle.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/lab/Lab.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/Notebook.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/NotebookCodeEditor.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/cells/NotebookCell.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/cells/NotebookCodeCell.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/cells/NotebookExerciseCell.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/cells/NotebookSolutionCell.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/notebook-styles.css",
        "packages/svelte/ui-components/src/learning-objects/content/talk/TalkAdobe.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/talk/TalkClient.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/talk/TalkMarp.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/talk/TalkMozilla.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/whiteboard/WhiteboardViewer.svelte",
        "packages/svelte/ui-components/src/learning-objects/layout/Card.svelte",
        "packages/svelte/ui-components/src/learning-objects/layout/Cards.svelte",
        "packages/svelte/ui-components/src/learning-objects/layout/LoContextPanel.svelte",
        "packages/svelte/ui-components/src/learning-objects/layout/Panels.svelte",
        "packages/svelte/ui-components/src/learning-objects/layout/Units.svelte",
        "packages/svelte/ui-components/src/learning-objects/layout/Wall.svelte",
        "packages/svelte/ui-components/src/learning-objects/structure/Composite.svelte",
        "packages/svelte/ui-components/src/learning-objects/structure/Context.svelte",
        "packages/svelte/ui-components/src/quiz/QuizQuestion.svelte",
        "packages/svelte/ui-components/src/quiz/QuizResults.svelte",
        "packages/svelte/ui-components/src/quiz/QuizTaker.svelte",
        "packages/svelte/ui-components/src/time/Catalogue.svelte",
        "packages/svelte/ui-components/src/time/ConnectLatestLosCards.svelte",
        "packages/svelte/ui-components/src/time/CourseGroup.svelte",
        "packages/svelte/ui-components/src/time/CourseGroupHeader.svelte",
        "packages/svelte/ui-components/src/time/Courses.svelte",
        "packages/svelte/ui-components/src/time/Students.svelte",
        "packages/svelte/ui-navigators/package.json",
        "packages/svelte/ui-navigators/src/Calendar.svelte",
        "packages/svelte/ui-navigators/src/CourseContext.svelte",
        "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
        "packages/svelte/ui-navigators/src/LayoutMenu.svelte",
        "packages/svelte/ui-navigators/src/MainNavigator.svelte",
        "packages/svelte/ui-navigators/src/SecondaryNavigator.svelte",
        "packages/svelte/ui-navigators/src/TutorsShell.svelte",
        "packages/svelte/ui-navigators/src/buttons/Breadcrumbs.svelte",
        "packages/svelte/ui-navigators/src/buttons/CalendarButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/CourseSentimentButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/EditCoursButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/InfoButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/OnlineButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/SearchButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/TocButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/WhiteboardButton.svelte",
        "packages/svelte/ui-navigators/src/footers/Footer.svelte",
        "packages/svelte/ui-navigators/src/footers/TutorsMessage.svelte",
        "packages/svelte/ui-navigators/src/footers/TutorsVersion.svelte",
        "packages/svelte/ui-navigators/src/layout/AppearanceSwitcher.svelte",
        "packages/svelte/ui-navigators/src/layout/CodeThemeSwitcher.svelte",
        "packages/svelte/ui-navigators/src/layout/LanguageSwitcher.svelte",
        "packages/svelte/ui-navigators/src/layout/LayoutSwitcher.svelte",
        "packages/svelte/ui-navigators/src/layout/ThemeSwitcher.svelte",
        "packages/svelte/ui-navigators/src/search/resource-search.ts",
        "packages/svelte/ui-navigators/src/titles/CourseTitle.svelte",
        "packages/svelte/ui-navigators/src/tutors-connect/AnonProfile.svelte",
        "packages/svelte/ui-navigators/src/tutors-connect/ConnectedProfile.svelte",
        "packages/svelte/ui-primitives/src/_safelist.svelte",
        "packages/svelte/ui-primitives/src/components/ErrorPage.svelte",
        "packages/svelte/ui-primitives/src/components/Icon.svelte",
        "packages/svelte/ui-primitives/src/components/Image.svelte",
        "packages/svelte/ui-primitives/src/components/LoContextTreeView.svelte",
        "packages/svelte/ui-primitives/src/components/LoReference.svelte",
        "packages/svelte/ui-primitives/src/components/Menu.svelte",
        "packages/svelte/ui-primitives/src/components/MenuItem.svelte",
        "packages/svelte/ui-primitives/src/components/SetuIcon.svelte",
        "packages/svelte/ui-primitives/src/components/Sidebar.svelte",
        "packages/svelte/ui-primitives/src/components/StudentCard.svelte",
        "packages/svelte/ui-primitives/src/components/ToastProvider.svelte",
        "packages/svelte/ui-primitives/src/components/TourOverlay.svelte",
        "packages/svelte/ui-primitives/src/components/TutorsIcon.svelte",
        "packages/svelte/utils/i18n/src/messages/de.ts",
        "packages/svelte/utils/i18n/src/messages/en.ts",
        "packages/svelte/utils/i18n/src/messages/es.ts",
        "packages/svelte/utils/i18n/src/messages/fr.ts",
        "packages/svelte/utils/i18n/src/messages/ga.ts",
        "packages/svelte/utils/i18n/src/messages/it.ts",
        "packages/svelte/utils/rbac/src/index.ts",
        "packages/svelte/utils/rbac/src/rbac-service.svelte.ts",
        "packages/svelte/utils/tour/src/index.ts",
        "packages/svelte/utils/tour/src/steps.ts",
        "packages/svelte/utils/tour/src/tour-service.svelte.ts",
        "playwright-a11y.config.ts",
        "pnpm-lock.yaml",
        "scripts/checks/ears-audit.ts",
        "scripts/checks/suite-health.ts",
        "tests/TESTING.md",
        "tests/bdd/features/shared/theming.feature",
        "tests/bdd/features/ui/accessibility.feature",
        "tests/bdd/features/ui/content-locks.feature",
        "tests/bdd/features/ui/course-tools.feature",
        "tests/bdd/features/ui/learning-activities.feature",
        "tests/bdd/features/ui/preferences-and-themes.feature",
        "tests/bdd/features/ui/reading.feature",
        "tests/bdd/features/ui/resource-cards.feature",
        "tests/bdd/features/ui/search.feature",
        "tests/bdd/features/ui/shell-and-navigation.feature",
        "tests/bdd/steps/shared/theming.steps.ts",
        "tests/bdd/support/theme.ts",
        "tests/components/runes/analytics-store.test.ts",
        "tests/components/runes/course-store.test.ts",
        "tests/components/runes/presence-store.test.ts",
        "tests/components/ui-components/CalendarHeatmap.test.ts",
        "tests/components/ui-components/PresenceIndicator.test.ts",
        "tests/components/ui-components/TopicCard.test.ts",
        "tests/components/ui-components/UnitCard.test.ts",
        "tests/components/ui-navigators/CourseHeader.test.ts",
        "tests/components/ui-navigators/Navigator.test.ts",
        "tests/components/ui-navigators/SearchResults.test.ts",
        "tests/components/ui-navigators/Sidebar.test.ts",
        "tests/components/ui-primitives/Button.test.ts",
        "tests/components/ui-primitives/Card.test.ts",
        "tests/components/ui-primitives/Icon.test.ts",
        "tests/components/ui-primitives/Layout.test.ts",
        "tests/components/ui-primitives/Tooltip.test.ts",
        "tests/conformance/release-harness.test.ts",
        "tests/conformance/release-rules.test.ts",
        "tests/e2e-stack/journeys/journeys.ts",
        "tests/e2e-stack/journeys/stack.ts",
        "tests/e2e-stack/journeys/student.journey.spec.ts",
        "tests/e2e/accessibility.spec.ts",
        "tests/performance/bundle-budgets.json",
        "tests/suite-health/ears-audit.test.ts",
        "tests/suite-health/fixtures/ears-audit/root/apps/reader/tests/e2e/ui.spec.ts",
        "tests/suite-health/fixtures/ears-audit/root/tests/bdd/features/ui/ui.feature",
        "tests/suite-health/known-findings.txt",
        "tests/unit/rbac/lock-matching.test.ts",
        "tests/unit/reader/copy-code.test.ts",
        "tests/unit/reader/resource-search.test.ts",
        "tests/unit/themes/theme-icon-fallback.test.ts"
      ],
      "churn": 11781,
      "hotspotsTouched": [
        "packages/svelte/ui-primitives/src/components/LoContextTreeView.svelte"
      ],
      "testDelta": {
        "production": 6643,
        "tests": 4327,
        "ratio": 0.65,
        "packages": [
          {
            "package": "apps/catalogue",
            "production": 12,
            "tests": 3397,
            "ratio": 283.08
          },
          {
            "package": "apps/live",
            "production": 16,
            "tests": 3397,
            "ratio": 212.31
          },
          {
            "package": "apps/reader",
            "production": 1487,
            "tests": 4317,
            "ratio": 2.9
          },
          {
            "package": "apps/time",
            "production": 437,
            "tests": 3392,
            "ratio": 7.76
          },
          {
            "package": "packages/svelte/course",
            "production": 50,
            "tests": 3392,
            "ratio": 67.84
          },
          {
            "package": "packages/svelte/runes",
            "production": 31,
            "tests": 3392,
            "ratio": 109.42
          },
          {
            "package": "packages/svelte/themes",
            "production": 530,
            "tests": 3392,
            "ratio": 6.4
          },
          {
            "package": "packages/svelte/ui-components",
            "production": 1493,
            "tests": 3392,
            "ratio": 2.27
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 1530,
            "tests": 3392,
            "ratio": 2.22
          },
          {
            "package": "packages/svelte/ui-primitives",
            "production": 508,
            "tests": 3392,
            "ratio": 6.68
          },
          {
            "package": "packages/svelte/utils",
            "production": 549,
            "tests": 3392,
            "ratio": 6.18
          }
        ]
      },
      "reviewed": false,
      "points": 25,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #313 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/313",
          "pr": 313,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "hotspot",
          "why": "PR #313, a first contribution, touches hotspot packages/svelte/ui-primitives/src/components/LoContextTreeView.svelte (3 of the last 6 releases)",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/313/files#diff-3805a328d2572205ef2f52b7b2b8eb8164c3c1dc10b3c867d195122994548757",
          "file": "packages/svelte/ui-primitives/src/components/LoContextTreeView.svelte",
          "pr": 313,
          "author": "Jordan Harrison"
        },
        {
          "points": 5,
          "rule": "churn",
          "why": "reader churn 3755 lines, above 2× its median of 98 over the last 6 releases; PR #313 is the largest part (2422 lines)",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/313/files#diff-6e0d83696317a7dd434a0f962ec82a7debb04a718f3885992316f95ec9b82733",
          "file": "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
          "pr": 313,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #313 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/313/files#diff-da39d9014d5107a6720eb1d4637fe8dafad760cb8d03ebd5ab68c4f4ab5a2403",
          "file": "apps/catalogue/src/app.css",
          "pr": 313,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 316,
      "sha": "895add5f5c7debcb25a25241fc6ee661bd12fab4",
      "title": "fix(whiteboard): load the scene, follow dark mode, match the Paper UI (supersedes #304)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/316",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "apps/reader/netlify.toml",
        "apps/reader/static/excalidraw-editor.html",
        "apps/reader/static/excalidraw-viewer.html",
        "guides/WHITEBOARD.md",
        "packages/svelte/ui-components/src/learning-objects/content/whiteboard/WhiteboardViewer.svelte",
        "tests/contract/realtime/whiteboard-protocol.contract.test.ts",
        "tests/contract/support/schemas.ts"
      ],
      "churn": 318,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 167,
        "tests": 25,
        "ratio": 0.15,
        "packages": [
          {
            "package": "packages/svelte/ui-components",
            "production": 167,
            "tests": 25,
            "ratio": 0.15
          }
        ]
      },
      "reviewed": false,
      "points": 20,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #316 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/316",
          "pr": 316,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "tests",
          "why": "PR #316 changed 167 production lines in packages/svelte/ui-components with 25 test lines (0.15): below 0.2",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/316/files#diff-df9fd1dd4556d3b501ea96a8bfc85aeae703e79866841d36fa27aab651c128d6",
          "file": "packages/svelte/ui-components/src/learning-objects/content/whiteboard/WhiteboardViewer.svelte",
          "pr": 316,
          "author": "Leigh Griffin"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #316 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/316/files#diff-093013b49b9a1084dcf8f9e57b55bc5113d33414d3e4963e21b514cbdab622e9",
          "file": "apps/reader/netlify.toml",
          "pr": 316,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 317,
      "sha": "0ebb37020e91f629aa3440fe86ec89485db09995",
      "title": "tutors-sdk/fix/enable-rls-public-tables",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/317",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "docs/DATA-INVENTORY.md",
        "guides/MIGRATIONS.md",
        "supabase/migrations/20260924_enable_rls_public_tables.sql"
      ],
      "churn": 55,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #317 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/317",
          "pr": 317,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #317 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/317/files#diff-fdf1bb8831df30246efcd2e6f6f6f6706e0abf56c5d221192cd5add0ba494cd0",
          "file": "supabase/migrations/20260924_enable_rls_public_tables.sql",
          "pr": 317,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 318,
      "sha": "7b9b8ad974f745a308472a6ed9324684595870ac",
      "title": "Make phones and tablets fit: two-up cards, scroll-away header, no keyboard hints on touch",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/318",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "DESIGN.md",
        "apps/reader/src/routes/(course-reader)/search/[courseid]/+page.svelte",
        "apps/reader/src/routes/(home)/Links.svelte",
        "apps/reader/tests/e2e/reading.spec.ts",
        "apps/reader/tests/e2e/resource-cards.spec.ts",
        "apps/reader/tests/e2e/search.spec.ts",
        "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "packages/svelte/themes/src/styles/paper-tokens.css",
        "packages/svelte/themes/src/styles/paper-ui.css",
        "packages/svelte/ui-components/src/learning-objects/content/Note.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/lab/Lab.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/Notebook.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/talk/TalkClient.svelte",
        "packages/svelte/ui-components/src/learning-objects/layout/Card.svelte",
        "packages/svelte/ui-navigators/src/MainNavigator.svelte",
        "packages/svelte/ui-navigators/src/SecondaryNavigator.svelte",
        "packages/svelte/ui-navigators/src/TutorsShell.svelte",
        "packages/svelte/ui-navigators/src/buttons/SearchButton.svelte",
        "packages/svelte/ui-primitives/src/components/Sidebar.svelte",
        "tests/bdd/features/ui/reading.feature",
        "tests/bdd/features/ui/resource-cards.feature",
        "tests/bdd/features/ui/search.feature",
        "tests/bdd/features/ui/shell-and-navigation.feature"
      ],
      "churn": 424,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 220,
        "tests": 169,
        "ratio": 0.77,
        "packages": [
          {
            "package": "apps/reader",
            "production": 16,
            "tests": 169,
            "ratio": 10.56
          },
          {
            "package": "packages/svelte/themes",
            "production": 41,
            "tests": 62,
            "ratio": 1.51
          },
          {
            "package": "packages/svelte/ui-components",
            "production": 36,
            "tests": 62,
            "ratio": 1.72
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 115,
            "tests": 62,
            "ratio": 0.54
          },
          {
            "package": "packages/svelte/ui-primitives",
            "production": 12,
            "tests": 62,
            "ratio": 5.17
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #318 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/318",
          "pr": 318,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #318 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/318/files#diff-b40b17c22411e18933bba1b4e8179db964c687df979595ec583f832eab50c029",
          "file": "apps/reader/src/routes/(course-reader)/search/[courseid]/+page.svelte",
          "pr": 318,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": null,
      "sha": "8582ef2a6c4f45f5b16ca7cc7c1b90b6dfc1f3a8",
      "title": "Rationalised the connect, course home and course tools menus",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/commit/8582ef2a6c4f45f5b16ca7cc7c1b90b6dfc1f3a8",
      "direct": true,
      "release": false,
      "author": "Eamonn de Leastar",
      "firstContribution": false,
      "files": [
        "apps/reader/tests/e2e/course-tools.spec.ts",
        "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "apps/reader/tests/e2e/support.ts",
        "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
        "packages/svelte/ui-navigators/src/buttons/CourseSentimentButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/OnlineButton.svelte",
        "packages/svelte/ui-navigators/src/tutors-connect/AnonProfile.svelte",
        "packages/svelte/ui-navigators/src/tutors-connect/ConnectedProfile.svelte",
        "packages/svelte/utils/i18n/src/messages/de.ts",
        "packages/svelte/utils/i18n/src/messages/en.ts",
        "packages/svelte/utils/i18n/src/messages/es.ts",
        "packages/svelte/utils/i18n/src/messages/fr.ts",
        "packages/svelte/utils/i18n/src/messages/ga.ts",
        "packages/svelte/utils/i18n/src/messages/it.ts",
        "tests/bdd/features/ui/course-tools.feature",
        "tests/bdd/features/ui/shell-and-navigation.feature"
      ],
      "churn": 275,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 163,
        "tests": 112,
        "ratio": 0.69,
        "packages": [
          {
            "package": "packages/svelte/ui-navigators",
            "production": 109,
            "tests": 35,
            "ratio": 0.32
          },
          {
            "package": "packages/svelte/utils",
            "production": 54,
            "tests": 35,
            "ratio": 0.65
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "commit 8582ef2 \"Rationalised the connect, course home and course tools menus\" reached main without a pull request, so nobody reviewed it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/commit/8582ef2a6c4f45f5b16ca7cc7c1b90b6dfc1f3a8",
          "pr": null,
          "commit": "8582ef2a6c4f45f5b16ca7cc7c1b90b6dfc1f3a8",
          "author": "Eamonn de Leastar"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "commit 8582ef2 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/commit/8582ef2a6c4f45f5b16ca7cc7c1b90b6dfc1f3a8#diff-b95d0dd8a116dc2d59c3f7ea2a20342d216e5c2f820452535f486ba9fe5265ef",
          "file": "apps/reader/tests/e2e/course-tools.spec.ts",
          "pr": null,
          "commit": "8582ef2a6c4f45f5b16ca7cc7c1b90b6dfc1f3a8",
          "author": "Eamonn de Leastar"
        }
      ]
    },
    {
      "pr": 330,
      "sha": "fc96e6a0913f84ff7a236fbdf53933243887049a",
      "title": "tutors-sdk/codex/course-shell-mobile-header",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/330",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "apps/reader/tests/e2e/content-locks.spec.ts",
        "apps/reader/tests/e2e/resource-cards.spec.ts",
        "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "packages/svelte/themes/src/styles/paper-ui.css",
        "packages/svelte/themes/src/styles/theme-overrides.css",
        "packages/svelte/ui-components/src/learning-objects/layout/Card.svelte",
        "packages/svelte/ui-components/src/learning-objects/structure/Composite.svelte",
        "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
        "packages/svelte/ui-navigators/src/MainNavigator.svelte",
        "packages/svelte/ui-navigators/src/SecondaryNavigator.svelte",
        "packages/svelte/ui-navigators/src/buttons/CalendarButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/InfoButton.svelte",
        "packages/svelte/utils/i18n/src/messages/de.ts",
        "packages/svelte/utils/i18n/src/messages/en.ts",
        "packages/svelte/utils/i18n/src/messages/es.ts",
        "packages/svelte/utils/i18n/src/messages/fr.ts",
        "packages/svelte/utils/i18n/src/messages/ga.ts",
        "packages/svelte/utils/i18n/src/messages/it.ts",
        "tests/bdd/features/ui/shell-and-navigation.feature",
        "tests/e2e-stack/journeys/journeys.ts"
      ],
      "churn": 197,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 144,
        "tests": 53,
        "ratio": 0.37,
        "packages": [
          {
            "package": "packages/svelte/themes",
            "production": 8,
            "tests": 11,
            "ratio": 1.38
          },
          {
            "package": "packages/svelte/ui-components",
            "production": 30,
            "tests": 11,
            "ratio": 0.37
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 100,
            "tests": 11,
            "ratio": 0.11
          },
          {
            "package": "packages/svelte/utils",
            "production": 6,
            "tests": 11,
            "ratio": 1.83
          }
        ]
      },
      "reviewed": false,
      "points": 20,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #330 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/330",
          "pr": 330,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "tests",
          "why": "PR #330, a first contribution, changed 100 production lines in packages/svelte/ui-navigators with 11 test lines (0.11): below 0.2",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/330/files#diff-d9959693589250e82da1747e0d059c0b1d7215ba4f64d1c3f3e9d73e3321ed90",
          "file": "packages/svelte/ui-navigators/src/MainNavigator.svelte",
          "pr": 330,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #330 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/330/files#diff-181f84addbc1846dd93430d1c01cb22c960dddc72b025e02d57739da112b5db4",
          "file": "apps/reader/tests/e2e/content-locks.spec.ts",
          "pr": 330,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 333,
      "sha": "adc9a9eb0db3ca011d0a93b7a913920ca9c41e5b",
      "title": "test: honest coverage floors, mutation floors and a nightly mutation job (Rules 0110-0114)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/333",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/workflows/ci.yml",
        ".github/workflows/nightly.yml",
        "guides/MUTATION-TESTING.md",
        "guides/TESTING-OVERVIEW.md",
        "guides/TESTING.md",
        "package.json",
        "scripts/checks/coverage-floors.ts",
        "scripts/checks/mutation-floors.ts",
        "stryker.config.json",
        "tests/TESTING.md",
        "tests/bdd/features/developer/test-quality-ratchets.feature",
        "tests/bdd/steps/developer/test-quality-ratchets.steps.ts",
        "tests/mutation/mutation-floors.json",
        "tests/suite-health/coverage-floors.json",
        "vitest.config.ts"
      ],
      "churn": 719,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 391,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #333 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/333",
          "pr": 333,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 335,
      "sha": "c1e20f942fac8b28efe8dc051f6c903ec4346fb9",
      "title": "test: mutation-test 12 modules at 93.6%, break at 90 (Rules 0113, 0115)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/335",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "guides/MUTATION-TESTING.md",
        "guides/TESTING-OVERVIEW.md",
        "guides/TESTING.md",
        "scripts/checks/coverage-floors.ts",
        "stryker.config.json",
        "tests/TESTING.md",
        "tests/bdd/features/developer/test-quality-ratchets.feature",
        "tests/bdd/steps/developer/test-quality-ratchets.steps.ts",
        "tests/mutation/mutation-floors.json",
        "tests/suite-health/coverage-floors.json",
        "tests/unit/gen/lr-utils-mutations.test.ts",
        "tests/unit/gen/template-utils-mutations.test.ts",
        "tests/unit/model/course-utils-mutations.test.ts",
        "tests/unit/model/lo-tree-mutations.test.ts",
        "tests/unit/model/lo-utils-mutations2.test.ts",
        "tests/unit/model/markdown-utils-mutations.test.ts",
        "tests/unit/model/search-mutations2.test.ts",
        "tests/unit/time/base-lab-model-mutations.test.ts",
        "tests/unit/time/lab-utils-mutations.test.ts",
        "vitest.config.mutation.ts"
      ],
      "churn": 1938,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 1856,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #335 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/335",
          "pr": 335,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 334,
      "sha": "f12110269e315e57a329b9cf6a282e2ca6b53e5f",
      "title": "Let the image backfill accept V16.2.1 and 16.2.1",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/334",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/workflows/image-build.yml",
        "deploy/README.md",
        "tests/conformance/promote-image.test.ts"
      ],
      "churn": 48,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 32,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #334 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/334",
          "pr": 334,
          "author": "Claude"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #334 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/334/files#diff-a36c2b23480830b1d23bfca9ee3e98f172b1bee39d034c06780f9790dcd8c3f4",
          "file": ".github/workflows/image-build.yml",
          "pr": 334,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 337,
      "sha": "3ab2bf2b53fe3bcd7bbb1f35194954a06fbdd672",
      "title": "fix(load): drop the Node-only log line from the k6 reader traffic script",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/337",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "tests/performance/k6/lib/reader-traffic.js"
      ],
      "churn": 1,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 1,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #337 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/337",
          "pr": 337,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 336,
      "sha": "1592250ef44a1dc91b51e37e5b17710385b9a8bf",
      "title": "test: nightly mutation testing over every library module",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/336",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/workflows/nightly.yml",
        ".gitignore",
        "guides/MUTATION-TESTING.md",
        "guides/TESTING-OVERVIEW.md",
        "guides/TESTING.md",
        "package.json",
        "scripts/checks/mutation-floors.ts",
        "stryker.nightly.config.json",
        "tests/TESTING.md",
        "tests/bdd/features/developer/test-quality-ratchets.feature",
        "tests/bdd/steps/developer/test-quality-ratchets.steps.ts",
        "tests/mutation/nightly-mutation-floors.json",
        "vitest.config.mutation-nightly.ts"
      ],
      "churn": 622,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 418,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #336 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/336",
          "pr": 336,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 340,
      "sha": "e57afb628e48fb6cc700578f0f3c7f7dd51f825c",
      "title": "docs(testing): describe both mutation runs and refresh stale figures",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/340",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "CONTRIBUTING.md",
        "guides/MUTATION-TESTING.md",
        "guides/TESTING-OVERVIEW.md",
        "guides/TESTING.md",
        "tests/TESTING.md"
      ],
      "churn": 66,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 2,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #340 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/340",
          "pr": 340,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 349,
      "sha": "54a8f832d4138484f4c37ce975d7b08e977d09c4",
      "title": "feat(release): generate the release changelog from merged PRs and their EARS Rules",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/349",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/workflows/release-dispatch.yml",
        "CONTRIBUTING.md",
        "guides/EARS-METHODOLOGY.md",
        "guides/Release-Strategy.md",
        "package.json",
        "scripts/release-changelog.ts",
        "scripts/release-rules.ts",
        "tests/bdd/features/developer/release-changelog.feature",
        "tests/bdd/steps/developer/release-changelog.steps.ts",
        "tests/conformance/release-changelog.test.ts",
        "tests/conformance/release-harness.test.ts",
        "tests/conformance/release-rules.test.ts"
      ],
      "churn": 775,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 370,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #349 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/349",
          "pr": 349,
          "author": "Claude"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #349 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/349/files#diff-5120444e4d184841565d20ffc18b895d7d4d3f1ef63c38671080d41fa47759d9",
          "file": ".github/workflows/release-dispatch.yml",
          "pr": 349,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 350,
      "sha": "c117f56e34a2d1b02a6d1f7773e5eabc7a55e339",
      "title": "Add \"the data API\" as an EARS system name",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/350",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "guides/EARS-METHODOLOGY.md",
        "scripts/checks/ears-audit.ts",
        "tests/suite-health/ears-audit.test.ts"
      ],
      "churn": 9,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 2,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #350 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/350",
          "pr": 350,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 351,
      "sha": "d7b88b3917ebd88d36a2a133691d9c95dc533fc3",
      "title": "ci(image-build): sign and attest the digest before tagging it",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/351",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/workflows/image-build.yml",
        "deploy/README.md",
        "tests/conformance/promote-image.test.ts"
      ],
      "churn": 78,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 16,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #351 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/351",
          "pr": 351,
          "author": "Claude"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #351 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/351/files#diff-a36c2b23480830b1d23bfca9ee3e98f172b1bee39d034c06780f9790dcd8c3f4",
          "file": ".github/workflows/image-build.yml",
          "pr": 351,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 353,
      "sha": "17243d9305b1b5e184be4458e40d187b6ad6e8ac",
      "title": "fix(community): error reports flushed on page unload reach app_errors (console, network)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/353",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "packages/svelte/community/src/utils/error-transport.ts",
        "tests/suite-health/coverage-floors.json",
        "tests/unit/community/error-transport.test.ts"
      ],
      "churn": 81,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 7,
        "tests": 74,
        "ratio": 10.57,
        "packages": [
          {
            "package": "packages/svelte/community",
            "production": 7,
            "tests": 74,
            "ratio": 10.57
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #353 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/353",
          "pr": 353,
          "author": "Claude"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #353 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/353/files#diff-f3dde95052a1c50fbe55eb311e0bee9a099f77266952937d941eed57ffb4a1a4",
          "file": "packages/svelte/community/src/utils/error-transport.ts",
          "pr": 353,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 352,
      "sha": "6f89eb41504836165508db966593153256059bf4",
      "title": "fix(deps): override devalue to >=5.9.1 for GHSA-9rgm-9g3h-6x36",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/352",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "pnpm-lock.yaml",
        "pnpm-workspace.yaml"
      ],
      "churn": 15,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #352 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/352",
          "pr": 352,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 354,
      "sha": "a4c4c667768414100a09d98c597f18e8f21d1d7d",
      "title": "fix(build): name Netlify builds after their commit (network)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/354",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "apps/catalogue/svelte.config.js",
        "apps/live/svelte.config.js",
        "apps/reader/svelte.config.js",
        "apps/time/svelte.config.js",
        "tests/conformance/build-identity.test.ts"
      ],
      "churn": 47,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 24,
        "tests": 23,
        "ratio": 0.96,
        "packages": [
          {
            "package": "apps/catalogue",
            "production": 6,
            "tests": 23,
            "ratio": 3.83
          },
          {
            "package": "apps/live",
            "production": 6,
            "tests": 23,
            "ratio": 3.83
          },
          {
            "package": "apps/reader",
            "production": 6,
            "tests": 23,
            "ratio": 3.83
          },
          {
            "package": "apps/time",
            "production": 6,
            "tests": 23,
            "ratio": 3.83
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #354 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/354",
          "pr": 354,
          "author": "Claude"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #354 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/354/files#diff-f59256a303b4024e8a8528f50c846374d823ee3e46c478100acfb0cb61cc4baf",
          "file": "apps/catalogue/svelte.config.js",
          "pr": 354,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 355,
      "sha": "017ceb6d1882e07106d7f35afde27cc0a4eaeaca",
      "title": "feat(release): pnpm release:candidate, release/deployed.json and the release SOP",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/355",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/CODEOWNERS",
        ".github/workflows/deploy.yml",
        "guides/Release-Strategy.md",
        "package.json",
        "release/README.md",
        "release/SOP.md",
        "release/deployed.json",
        "scripts/checks/deploy-pins.ts",
        "scripts/deploy-pin.ts",
        "scripts/release-candidate.ts",
        "tests/bdd/features/developer/release-candidate.feature",
        "tests/bdd/steps/developer/release-candidate.steps.ts",
        "tests/conformance/release-candidate.test.ts"
      ],
      "churn": 919,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 485,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #355 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/355",
          "pr": 355,
          "author": "Claude"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #355 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/355/files#diff-28802fbf11c83a2eee09623fb192785e7ca92a3f40602a517c011b947a1822d3",
          "file": ".github/workflows/deploy.yml",
          "pr": 355,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 363,
      "sha": "18b4d2765ef0aa368062d621dc420691b4e6b567",
      "title": "docs(release): make the SOP match the harness as built",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/363",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "guides/Release-Strategy.md",
        "release/README.md",
        "release/SOP.md"
      ],
      "churn": 24,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #363 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/363",
          "pr": 363,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 331,
      "sha": "9146c41c7b608f3e6451357e710a17ebd55fe2e6",
      "title": "Bring time, catalogue and live onto the Paper design system and the reader's UX patterns",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "apps/catalogue/README.md",
        "apps/catalogue/package.json",
        "apps/catalogue/src/app.html",
        "apps/catalogue/src/routes/+layout.svelte",
        "apps/catalogue/src/routes/+page.svelte",
        "apps/live/README.md",
        "apps/live/package.json",
        "apps/live/src/app.html",
        "apps/live/src/routes/+layout.svelte",
        "apps/live/src/routes/+page.svelte",
        "apps/live/src/routes/[courseid]/+page.svelte",
        "apps/reader/package.json",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/+page.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/ActivityTable.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/HeatMaps.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/Heatmap.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/Tables.svelte",
        "apps/reader/src/routes/(course-reader)/time/[courseid]/heat.ts",
        "apps/time/README.md",
        "apps/time/package.json",
        "apps/time/src/app.css",
        "apps/time/src/app.html",
        "apps/time/src/lib/components/CourseCard.svelte",
        "apps/time/src/lib/components/CourseIdDialog.svelte",
        "apps/time/src/lib/components/MediansView.svelte",
        "apps/time/src/lib/components/Navigation.svelte",
        "apps/time/src/lib/components/OnlineIcon.svelte",
        "apps/time/src/lib/components/PinDialog.svelte",
        "apps/time/src/lib/components/SentimentIcon.svelte",
        "apps/time/src/lib/components/StudentAvatar.svelte",
        "apps/time/src/lib/components/StudentCard.svelte",
        "apps/time/src/lib/components/calendar/CalendarGrid.svelte",
        "apps/time/src/lib/components/calendar/CalendarHeatmap.svelte",
        "apps/time/src/lib/components/calendar/GridCalendarModel.ts",
        "apps/time/src/lib/components/calendar/SentimentCellRenderer.ts",
        "apps/time/src/lib/components/labs/GridLabModel.ts",
        "apps/time/src/lib/components/labs/LabsGrid.svelte",
        "apps/time/src/lib/components/tables/AssignmentsTable.svelte",
        "apps/time/src/lib/components/tables/CalendarByDayTable.svelte",
        "apps/time/src/lib/components/tables/CalendarTable.svelte",
        "apps/time/src/lib/components/tables/LabByStepTable.svelte",
        "apps/time/src/lib/components/tables/LearningRecordsTable.svelte",
        "apps/time/src/lib/components/tables/StudentCalendarTable.svelte",
        "apps/time/src/lib/components/tables/StudentLabTable.svelte",
        "apps/time/src/routes/+layout.svelte",
        "apps/time/src/routes/+layout.ts",
        "apps/time/src/routes/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/+layout.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/assignments/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/calendar/+layout.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/calendar/raw/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/lab/+layout.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/lab/learning-records/+page.svelte",
        "apps/time/src/routes/[courseid]/+layout.svelte",
        "apps/time/src/routes/[courseid]/[studentid]/+page.svelte",
        "etc/tutors-time-lib.api.md",
        "guides/specifications/calendar-analytics.md",
        "packages/jsr/time/src/utils/calendar-utils.ts",
        "packages/svelte/ui-components/package.json",
        "packages/svelte/ui-components/src/learning-objects/layout/Card.svelte",
        "packages/svelte/ui-components/src/time/ActivityTable.svelte",
        "packages/svelte/ui-components/src/time/Catalogue.svelte",
        "packages/svelte/ui-components/src/time/ConnectLatestLosCards.svelte",
        "packages/svelte/ui-components/src/time/CourseGroup.svelte",
        "packages/svelte/ui-components/src/time/CourseGroupHeader.svelte",
        "packages/svelte/ui-components/src/time/Courses.svelte",
        "packages/svelte/ui-components/src/time/CoursesGroup.svelte",
        "packages/svelte/ui-components/src/time/HeatMaps.svelte",
        "packages/svelte/ui-components/src/time/Heatmap.svelte",
        "packages/svelte/ui-components/src/time/Students.svelte",
        "packages/svelte/ui-components/src/time/Tables.svelte",
        "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
        "packages/svelte/ui-navigators/src/MainNavigator.svelte",
        "packages/svelte/ui-navigators/src/SecondaryNavigator.svelte",
        "packages/svelte/ui-navigators/src/TutorsShell.svelte",
        "packages/svelte/ui-navigators/src/buttons/Breadcrumbs.svelte",
        "packages/svelte/utils/i18n/src/messages/de.ts",
        "packages/svelte/utils/i18n/src/messages/en.ts",
        "packages/svelte/utils/i18n/src/messages/es.ts",
        "packages/svelte/utils/i18n/src/messages/fr.ts",
        "packages/svelte/utils/i18n/src/messages/ga.ts",
        "packages/svelte/utils/i18n/src/messages/it.ts",
        "pnpm-lock.yaml",
        "tests/bdd/features/instructor/analytics-calendar.feature",
        "tests/bdd/features/instructor/analytics-lab.feature",
        "tests/bdd/steps/instructor/analytics-calendar.steps.ts",
        "tests/bdd/steps/instructor/analytics-lab.steps.ts",
        "tests/completeness/known-gaps.txt",
        "tests/contract/__snapshots__/time-lib-api.test.ts.snap",
        "tests/performance/bundle-budgets.json",
        "tests/unit/time/calendar-mutations.test.ts",
        "tests/unit/time/calendar-utils.test.ts",
        "tests/unit/time/edge-cases.test.ts"
      ],
      "churn": 3693,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 3166,
        "tests": 319,
        "ratio": 0.1,
        "packages": [
          {
            "package": "apps/catalogue",
            "production": 31,
            "tests": 319,
            "ratio": 10.29
          },
          {
            "package": "apps/live",
            "production": 123,
            "tests": 319,
            "ratio": 2.59
          },
          {
            "package": "apps/reader",
            "production": 242,
            "tests": 319,
            "ratio": 1.32
          },
          {
            "package": "apps/time",
            "production": 1678,
            "tests": 319,
            "ratio": 0.19
          },
          {
            "package": "packages/jsr/time",
            "production": 55,
            "tests": 319,
            "ratio": 5.8
          },
          {
            "package": "packages/svelte/ui-components",
            "production": 379,
            "tests": 319,
            "ratio": 0.84
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 32,
            "tests": 319,
            "ratio": 9.97
          },
          {
            "package": "packages/svelte/utils",
            "production": 626,
            "tests": 319,
            "ratio": 0.51
          }
        ]
      },
      "reviewed": false,
      "points": 35,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #331 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331",
          "pr": 331,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "tests",
          "why": "PR #331, a first contribution, changed 1678 production lines in apps/time with 319 test lines (0.19): below 0.2",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331/files#diff-89be349f0f1b3e21c15df9cf0ed382f7aefd1707b11ba8e0ca717547553a53fb",
          "file": "apps/time/src/lib/components/MediansView.svelte",
          "pr": 331,
          "author": "Jordan Harrison"
        },
        {
          "points": 5,
          "rule": "churn",
          "why": "catalogue churn 204 lines, above 2× its median of 3 over the last 6 releases; PR #331 is the largest part (72 lines)",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331/files#diff-5ac631d07ba17484175dc6ba0ad0d55f257e801d4b1f2a88eb7941f90275f4a6",
          "file": "apps/catalogue/src/app.html",
          "pr": 331,
          "author": "Jordan Harrison"
        },
        {
          "points": 5,
          "rule": "churn",
          "why": "live churn 306 lines, above 2× its median of 2.5 over the last 6 releases; PR #331 is the largest part (164 lines)",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331/files#diff-d4f3beaa5f469d6d50fb9ca5300f2bb3ca5041d9716f0df65022760488fc9199",
          "file": "apps/live/src/routes/[courseid]/+page.svelte",
          "pr": 331,
          "author": "Jordan Harrison"
        },
        {
          "points": 5,
          "rule": "churn",
          "why": "time churn 2175 lines, above 2× its median of 9.5 over the last 6 releases; PR #331 is the largest part (1757 lines)",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331/files#diff-89be349f0f1b3e21c15df9cf0ed382f7aefd1707b11ba8e0ca717547553a53fb",
          "file": "apps/time/src/lib/components/MediansView.svelte",
          "pr": 331,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #331 changed Time, Reader, Live, Catalogue, Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331/files#diff-9c75df02d09573d64deea0a822ba5807d540ccad75393b98b2feeae95f98f449",
          "file": "apps/catalogue/README.md",
          "pr": 331,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 364,
      "sha": "185e87f12d34e0e6d7a16714c29aa08bde629639",
      "title": "fix(reader): title the sign-in page and claim the Paper rebuild's accessibility fixes (axe)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/364",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "apps/reader/src/routes/(auth)/auth/SigninWithGithub.svelte",
        "apps/reader/tests/e2e/accessibility.spec.ts",
        "release/claims.yaml",
        "tests/bdd/features/ui/accessibility.feature"
      ],
      "churn": 47,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 4,
        "tests": 23,
        "ratio": 5.75,
        "packages": [
          {
            "package": "apps/reader",
            "production": 4,
            "tests": 23,
            "ratio": 5.75
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #364 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/364",
          "pr": 364,
          "author": "Claude"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #364 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/364/files#diff-ab98a30ff73d23dec66e0306f4991c4b0b812421a29d2b0e1cc7f2c4ce80c69a",
          "file": "apps/reader/src/routes/(auth)/auth/SigninWithGithub.svelte",
          "pr": 364,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 366,
      "sha": "0af6ca44ef06bda86956c7711f525648e5ade681",
      "title": "docs(guides): guides/testing and guides/evolution, with an index",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/366",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        ".claude/skills/ears-gherkin-dev/SKILL.md",
        ".github/PULL_REQUEST_TEMPLATE.md",
        "CONTRIBUTING.md",
        "README.md",
        "guides/EARS-METHODOLOGY.md",
        "guides/MUTATION-TESTING.md",
        "guides/README.md",
        "guides/TESTING-OVERVIEW.md",
        "guides/TESTING.md",
        "guides/evolution/README.md",
        "guides/evolution/img/harness-growth.svg",
        "guides/evolution/img/history-commits.svg",
        "guides/evolution/img/history-merges.svg",
        "guides/evolution/img/monthly.svg",
        "guides/evolution/img/test-multiples.svg",
        "guides/evolution/img/test-progress.svg",
        "guides/evolution/img/types.svg",
        "guides/evolution/img/unclaimed.svg",
        "guides/evolution/img/weekly.svg",
        "guides/evolution/tools/charts.py",
        "guides/evolution/tools/data.json",
        "guides/evolution/tools/data.py",
        "guides/evolution/tools/measure.py",
        "guides/evolution/tools/tests.jsonl",
        "guides/evolution/tutors-revolution.md",
        "guides/specifications/README.md",
        "guides/testing/EARS-METHODOLOGY.md",
        "guides/testing/MUTATION-TESTING.md",
        "guides/testing/TESTING-OVERVIEW.md",
        "guides/testing/TESTING.md",
        "guides/testing/journey.md",
        "scripts/checks/ears-audit.ts",
        "tests/TESTING.md",
        "tests/bdd/ears-retired-rule-ids.txt"
      ],
      "churn": 5229,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 12,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #366 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/366",
          "pr": 366,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 367,
      "sha": "406c84ac00e152359286d7312d55ee555d5dd783",
      "title": "test(time): cover the Supabase and display lookups, restoring the coverage floor",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/367",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "tests/suite-health/coverage-floors.json",
        "tests/unit/time/supabase.test.ts",
        "tests/unit/time/tutors-time-display.test.ts"
      ],
      "churn": 168,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 168,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #367 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/367",
          "pr": 367,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 365,
      "sha": "5f2cdd7ba45ca085a5b35c5ea5b019052e8a88f8",
      "title": "feat(deploy): configure next deployment URLs at runtime",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/365",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        ".env.example",
        "apps/live/src/routes/[courseid]/+page.svelte",
        "apps/reader/src/routes/(home)/Links.svelte",
        "apps/time/src/lib/components/Navigation.svelte",
        "deploy/README.md",
        "deploy/k8s/base/configmap.yaml",
        "deploy/k8s/next/catalogue/kustomization.yaml",
        "deploy/k8s/next/live/kustomization.yaml",
        "deploy/k8s/next/reader/kustomization.yaml",
        "deploy/k8s/next/time/kustomization.yaml",
        "deploy/k8s/variants/kind/next-catalogue/kustomization.yaml",
        "deploy/k8s/variants/kind/next-live/kustomization.yaml",
        "deploy/k8s/variants/kind/next-reader/kustomization.yaml",
        "deploy/k8s/variants/kind/next-time/kustomization.yaml",
        "deploy/k8s/variants/openshift/next-catalogue/kustomization.yaml",
        "deploy/k8s/variants/openshift/next-live/kustomization.yaml",
        "deploy/k8s/variants/openshift/next-reader/kustomization.yaml",
        "deploy/k8s/variants/openshift/next-time/kustomization.yaml",
        "deploy/staging/.env.example",
        "packages/svelte/ui-components/src/time/Catalogue.svelte",
        "packages/svelte/ui-components/src/time/CourseGroupHeader.svelte",
        "packages/svelte/ui-components/src/time/Courses.svelte",
        "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
        "packages/svelte/ui-navigators/src/MainNavigator.svelte",
        "packages/svelte/ui-navigators/src/buttons/TutorsTimeIndicator.svelte",
        "packages/svelte/ui-navigators/src/footers/TutorsMessage.svelte",
        "packages/svelte/ui-navigators/src/footers/TutorsVersion.svelte",
        "packages/svelte/ui-primitives/package.json",
        "packages/svelte/ui-primitives/src/components/StudentCard.svelte",
        "packages/svelte/ui-primitives/src/utils/site-urls.ts",
        "pnpm-lock.yaml",
        "tests/conformance/platform-conformance.test.ts",
        "tests/unit/time/course-time.test.ts"
      ],
      "churn": 371,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 74,
        "tests": 41,
        "ratio": 0.55,
        "packages": [
          {
            "package": "apps/live",
            "production": 3,
            "tests": 41,
            "ratio": 13.67
          },
          {
            "package": "apps/reader",
            "production": 17,
            "tests": 41,
            "ratio": 2.41
          },
          {
            "package": "apps/time",
            "production": 2,
            "tests": 41,
            "ratio": 20.5
          },
          {
            "package": "packages/svelte/ui-components",
            "production": 9,
            "tests": 41,
            "ratio": 4.56
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 31,
            "tests": 41,
            "ratio": 1.32
          },
          {
            "package": "packages/svelte/ui-primitives",
            "production": 12,
            "tests": 41,
            "ratio": 3.42
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #365 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/365",
          "pr": 365,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #365 changed Infrastructure, Reader, Live, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/365/files#diff-d4f3beaa5f469d6d50fb9ca5300f2bb3ca5041d9716f0df65022760488fc9199",
          "file": "apps/live/src/routes/[courseid]/+page.svelte",
          "pr": 365,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 368,
      "sha": "865e9c41a1ca295d8301875a587c4375c2014ae8",
      "title": "build(deps): combine open Dependabot updates (#356–#362, supersedes #294)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/368",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/workflows/ci.yml",
        ".github/workflows/image-build.yml",
        ".github/workflows/nightly.yml",
        ".github/workflows/rc-validation.yml",
        "apps/time/package.json",
        "package.json",
        "packages/jsr/time/package.json",
        "packages/svelte/community/package.json",
        "packages/svelte/ui-components/package.json",
        "packages/svelte/ui-primitives/package.json",
        "pnpm-lock.yaml",
        "tests/suite-health/coverage-floors.json"
      ],
      "churn": 453,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 4,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #368 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/368",
          "pr": 368,
          "author": "Claude"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #368 changed Reader, Time, Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/368/files#diff-a36c2b23480830b1d23bfca9ee3e98f172b1bee39d034c06780f9790dcd8c3f4",
          "file": ".github/workflows/image-build.yml",
          "pr": 368,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 338,
      "sha": "47125615e622d70257bc2f54cb3e686bc7a39511",
      "title": "Accessibility: distinct landmark and control names in the course shell",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/338",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "apps/catalogue/tests/e2e/shell.spec.ts",
        "apps/reader/tests/e2e/accessibility.spec.ts",
        "packages/svelte/ui-components/src/learning-objects/content/lab/Lab.svelte",
        "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
        "packages/svelte/ui-navigators/src/MainNavigator.svelte",
        "packages/svelte/ui-navigators/src/TutorsShell.svelte",
        "packages/svelte/ui-navigators/src/buttons/SearchButton.svelte",
        "packages/svelte/utils/i18n/src/messages/de.ts",
        "packages/svelte/utils/i18n/src/messages/en.ts",
        "packages/svelte/utils/i18n/src/messages/es.ts",
        "packages/svelte/utils/i18n/src/messages/fr.ts",
        "packages/svelte/utils/i18n/src/messages/ga.ts",
        "packages/svelte/utils/i18n/src/messages/it.ts",
        "tests/bdd/features/ui/accessibility.feature",
        "tests/bdd/features/ui/catalogue.feature"
      ],
      "churn": 144,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 37,
        "tests": 107,
        "ratio": 2.89,
        "packages": [
          {
            "package": "packages/svelte/ui-components",
            "production": 2,
            "tests": 47,
            "ratio": 23.5
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 17,
            "tests": 47,
            "ratio": 2.76
          },
          {
            "package": "packages/svelte/utils",
            "production": 18,
            "tests": 47,
            "ratio": 2.61
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #338 changed Reader, Catalogue, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/338/files#diff-58991fa090f14980cbda2ed2c7d1f909e76d68d63cfffa3d690e6ef5119862ef",
          "file": "apps/catalogue/tests/e2e/shell.spec.ts",
          "pr": 338,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 339,
      "sha": "20e9711faeafc1b4c6f2c2287e23322824533569",
      "title": "test(architecture): keep ui-primitives off the data and access packages",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/339",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".dependency-cruiser.cjs",
        "tests/architecture/dependency-rules.test.ts",
        "tests/architecture/fixtures/workspace/packages/svelte/ui-primitives/src/reaches-data.ts",
        "tests/architecture/known-violations.txt"
      ],
      "churn": 17,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 9,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #339 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/339",
          "pr": 339,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 266,
      "sha": "90cb998977c587e5e2c1147287db6ea5bb9aeb1e",
      "title": "chore(infra): shared vite and svelte config helpers",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/266",
      "direct": false,
      "release": false,
      "author": "Leigh Griffin",
      "firstContribution": false,
      "files": [
        "ARCHITECTURE.md",
        "README.md",
        "apps/catalogue/README.md",
        "apps/catalogue/package.json",
        "apps/catalogue/svelte.config.js",
        "apps/catalogue/vite.config.ts",
        "apps/live/README.md",
        "apps/live/package.json",
        "apps/live/svelte.config.js",
        "apps/live/vite.config.ts",
        "apps/reader/README.md",
        "apps/reader/package.json",
        "apps/reader/svelte.config.js",
        "apps/reader/vite.config.ts",
        "apps/time/README.md",
        "apps/time/package.json",
        "apps/time/svelte.config.js",
        "apps/time/vite.config.ts",
        "packages/svelte/app-config/package.json",
        "packages/svelte/app-config/src/svelte.js",
        "packages/svelte/app-config/src/vite.js",
        "pnpm-lock.yaml",
        "scripts/checks/conformance.ts",
        "tests/conformance/build-identity.test.ts",
        "tests/security/security.test.ts"
      ],
      "churn": 488,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 328,
        "tests": 19,
        "ratio": 0.06,
        "packages": [
          {
            "package": "apps/catalogue",
            "production": 59,
            "tests": 19,
            "ratio": 0.32
          },
          {
            "package": "apps/live",
            "production": 59,
            "tests": 19,
            "ratio": 0.32
          },
          {
            "package": "apps/reader",
            "production": 66,
            "tests": 19,
            "ratio": 0.29
          },
          {
            "package": "apps/time",
            "production": 58,
            "tests": 19,
            "ratio": 0.33
          },
          {
            "package": "packages/svelte/app-config",
            "production": 86,
            "tests": 19,
            "ratio": 0.22
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #266 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/266/files#diff-9c75df02d09573d64deea0a822ba5807d540ccad75393b98b2feeae95f98f449",
          "file": "apps/catalogue/README.md",
          "pr": 266,
          "author": "Leigh Griffin"
        }
      ]
    },
    {
      "pr": 373,
      "sha": "76cd877126a7cb5e7cee00e88edcaaacb624d6e8",
      "title": "feat(reader): move Educator Control into the Learn section",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/373",
      "direct": false,
      "release": false,
      "author": "Eamonn de Leastar",
      "firstContribution": false,
      "files": [
        "apps/reader/tests/e2e/content-locks.spec.ts",
        "apps/reader/tests/e2e/course-tools.spec.ts",
        "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
        "packages/svelte/ui-navigators/src/MainNavigator.svelte",
        "packages/svelte/ui-navigators/src/buttons/EducatorControlButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/InfoButton.svelte",
        "packages/svelte/utils/i18n/src/messages/de.ts",
        "packages/svelte/utils/i18n/src/messages/en.ts",
        "packages/svelte/utils/i18n/src/messages/es.ts",
        "packages/svelte/utils/i18n/src/messages/fr.ts",
        "packages/svelte/utils/i18n/src/messages/it.ts",
        "tests/bdd/features/ui/content-locks.feature",
        "tests/bdd/features/ui/course-tools.feature",
        "tests/bdd/features/ui/shell-and-navigation.feature"
      ],
      "churn": 512,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 425,
        "tests": 87,
        "ratio": 0.2,
        "packages": [
          {
            "package": "packages/svelte/ui-navigators",
            "production": 405,
            "tests": 20,
            "ratio": 0.05
          },
          {
            "package": "packages/svelte/utils",
            "production": 20,
            "tests": 20,
            "ratio": 1
          }
        ]
      },
      "reviewed": true,
      "points": 20,
      "deductions": [
        {
          "points": 10,
          "rule": "tests",
          "why": "PR #373 changed 405 production lines in packages/svelte/ui-navigators with 20 test lines (0.05): below 0.2",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/373/files#diff-e5cd767e23ce00ac6cdda49b14e8f9243d64c624138053b6c18d1c869d9e1047",
          "file": "packages/svelte/ui-navigators/src/buttons/InfoButton.svelte",
          "pr": 373,
          "author": "Eamonn de Leastar"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #373 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/373/files#diff-181f84addbc1846dd93430d1c01cb22c960dddc72b025e02d57739da112b5db4",
          "file": "apps/reader/tests/e2e/content-locks.spec.ts",
          "pr": 373,
          "author": "Eamonn de Leastar"
        }
      ]
    },
    {
      "pr": 376,
      "sha": "865d02f82cd64caaa3056209e17eec3bea66f070",
      "title": "release: claim the package managers #143 removed from the runtime image (Rule 0220)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/376",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "release/claims.yaml",
        "tests/bdd/features/developer/runtime-image.feature",
        "tests/bdd/steps/developer/runtime-image.steps.ts"
      ],
      "churn": 78,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 69,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #376 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/376",
          "pr": 376,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 382,
      "sha": "b50677eb2bbac9ab537ef3981a29d49c22f072d5",
      "title": "Add pnpm release:quality and publish the nightly quality record",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/382",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/workflows/nightly.yml",
        "package.json",
        "scripts/checks/mutation-floors.ts",
        "scripts/checks/release-quality.ts",
        "tests/bdd/features/developer/release-quality.feature",
        "tests/bdd/steps/developer/release-quality.steps.ts",
        "tests/conformance/release-quality.test.ts"
      ],
      "churn": 694,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 449,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #382 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/382",
          "pr": 382,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 385,
      "sha": "c0a0965900cd0d058e1a75542e4ad5e548c246d8",
      "title": "Add release/openvex.json and pnpm check:openvex (Rules 0226 to 0229)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/385",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/workflows/release-claims.yml",
        "package.json",
        "release/README.md",
        "release/openvex.json",
        "scripts/checks/openvex.ts",
        "tests/bdd/features/developer/release-openvex.feature",
        "tests/bdd/steps/developer/release-openvex.steps.ts"
      ],
      "churn": 377,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 215,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #385 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/385",
          "pr": 385,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 386,
      "sha": "463f5bac476b8a8642050ca2015517f05495eef6",
      "title": "Put a notebook's outline in the sidebar, beside a lab's steps",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/386",
      "direct": false,
      "release": false,
      "author": "Eamonn de Leastar",
      "firstContribution": false,
      "files": [
        "DESIGN.md",
        "apps/reader/src/routes/(course-reader)/notebook/[courseid]/[...loid]/+page.ts",
        "apps/reader/tests/e2e/course-tools.spec.ts",
        "apps/reader/tests/e2e/learning-activities.spec.ts",
        "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "apps/reader/tests/e2e/support.ts",
        "packages/svelte/course/src/course/index.ts",
        "packages/svelte/course/src/course/services/live-notebook.ts",
        "packages/svelte/course/src/course/types.ts",
        "packages/svelte/runes/src/index.svelte.ts",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/Notebook.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/cells/NotebookCell.svelte",
        "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
        "packages/svelte/utils/i18n/src/messages/de.ts",
        "packages/svelte/utils/i18n/src/messages/en.ts",
        "packages/svelte/utils/i18n/src/messages/es.ts",
        "packages/svelte/utils/i18n/src/messages/fr.ts",
        "packages/svelte/utils/i18n/src/messages/ga.ts",
        "packages/svelte/utils/i18n/src/messages/it.ts",
        "tests/bdd/features/ui/learning-activities.feature",
        "tests/suite-health/coverage-floors.json",
        "tests/unit/course/course-service-not-found.test.ts",
        "tests/unit/course/live-notebook.test.ts"
      ],
      "churn": 454,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 165,
        "tests": 281,
        "ratio": 1.7,
        "packages": [
          {
            "package": "apps/reader",
            "production": 6,
            "tests": 281,
            "ratio": 46.83
          },
          {
            "package": "packages/svelte/course",
            "production": 47,
            "tests": 158,
            "ratio": 3.36
          },
          {
            "package": "packages/svelte/runes",
            "production": 9,
            "tests": 158,
            "ratio": 17.56
          },
          {
            "package": "packages/svelte/ui-components",
            "production": 77,
            "tests": 158,
            "ratio": 2.05
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 20,
            "tests": 158,
            "ratio": 7.9
          },
          {
            "package": "packages/svelte/utils",
            "production": 6,
            "tests": 158,
            "ratio": 26.33
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #386 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/386/files#diff-eb66371899236768313f2f7a3977cf3e24911c99a63196f0166e52603a1e7420",
          "file": "apps/reader/src/routes/(course-reader)/notebook/[courseid]/[...loid]/+page.ts",
          "pr": 386,
          "author": "Eamonn de Leastar"
        }
      ]
    },
    {
      "pr": 388,
      "sha": "0cd2fcb910555bed922e9916afcc8280b66ded06",
      "title": "Accept claim lifetimes and the policy checks in check:release-claims (Rules 0230 to 0233)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/388",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "CHANGELOG.md",
        "CONTRIBUTING.md",
        "release/README.md",
        "release/claims.yaml",
        "scripts/checks/release-claims.ts",
        "scripts/release-claims-draft.ts",
        "tests/bdd/features/developer/release-claims-lifetime.feature",
        "tests/bdd/steps/developer/release-claims-lifetime.steps.ts",
        "tests/conformance/release-claims.test.ts"
      ],
      "churn": 282,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 205,
        "ratio": null,
        "packages": []
      },
      "reviewed": false,
      "points": 0,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #388 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/388",
          "pr": 388,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 389,
      "sha": "af9d0d58b7c2cf216f66cc1da2585bc7b77ecdec",
      "title": "Badge the online row in course tools, not the account avatar",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/389",
      "direct": false,
      "release": false,
      "author": "Eamonn de Leastar",
      "firstContribution": false,
      "files": [
        "DESIGN.md",
        "apps/reader/tests/e2e/course-tools.spec.ts",
        "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "apps/reader/tests/e2e/support.ts",
        "packages/svelte/ui-navigators/src/buttons/OnlineButton.svelte",
        "packages/svelte/ui-navigators/src/tutors-connect/ConnectedProfile.svelte",
        "tests/bdd/features/developer/release-claims-lifetime.feature",
        "tests/bdd/features/ui/course-tools.feature",
        "tests/bdd/features/ui/shell-and-navigation.feature"
      ],
      "churn": 119,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 27,
        "tests": 89,
        "ratio": 3.3,
        "packages": [
          {
            "package": "packages/svelte/ui-navigators",
            "production": 27,
            "tests": 25,
            "ratio": 0.93
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #389 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/389/files#diff-b95d0dd8a116dc2d59c3f7ea2a20342d216e5c2f820452535f486ba9fe5265ef",
          "file": "apps/reader/tests/e2e/course-tools.spec.ts",
          "pr": 389,
          "author": "Eamonn de Leastar"
        }
      ]
    },
    {
      "pr": 387,
      "sha": "7f831774ab6c21925ddb6331581129bb7ba8053d",
      "title": "Add Rules 0237 and 0238 for runnable notebook exercises",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/387",
      "direct": false,
      "release": false,
      "author": "Eamonn de Leastar",
      "firstContribution": false,
      "files": [
        "apps/reader/tests/e2e/learning-activities.spec.ts",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/cells/NotebookSolutionCell.svelte",
        "tests/bdd/features/ui/learning-activities.feature"
      ],
      "churn": 71,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 4,
        "tests": 67,
        "ratio": 16.75,
        "packages": [
          {
            "package": "packages/svelte/ui-components",
            "production": 4,
            "tests": 22,
            "ratio": 5.5
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #387 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/387/files#diff-6c733e6d08463c6cf99fa821635e7bfedd7e5bf8366c6e8910cafffdeb06bc12",
          "file": "apps/reader/tests/e2e/learning-activities.spec.ts",
          "pr": 387,
          "author": "Eamonn de Leastar"
        }
      ]
    },
    {
      "pr": 390,
      "sha": "5dc7dc9d9574dc74b5d5af20e646033b2441bd35",
      "title": "Order the side menu Learn, Activity, Companions (Rule 0240)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/390",
      "direct": false,
      "release": false,
      "author": "Eamonn de Leastar",
      "firstContribution": false,
      "files": [
        "DESIGN.md",
        "apps/reader/tests/e2e/course-tools.spec.ts",
        "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
        "tests/bdd/features/ui/course-tools.feature"
      ],
      "churn": 36,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 14,
        "tests": 19,
        "ratio": 1.36,
        "packages": [
          {
            "package": "packages/svelte/ui-navigators",
            "production": 14,
            "tests": 8,
            "ratio": 0.57
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #390 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/390/files#diff-b95d0dd8a116dc2d59c3f7ea2a20342d216e5c2f820452535f486ba9fe5265ef",
          "file": "apps/reader/tests/e2e/course-tools.spec.ts",
          "pr": 390,
          "author": "Eamonn de Leastar"
        }
      ]
    },
    {
      "pr": 391,
      "sha": "b5c272c9aa49368989ae0a1edb8f02bae780b300",
      "title": "fix: remediate dependency advisories and reader warnings (sbom, vulns)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/391",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "apps/reader/src/routes/(course-reader)/search/[courseid]/+page.svelte",
        "apps/reader/src/routes/+layout.svelte",
        "deno.lock",
        "pnpm-lock.yaml",
        "pnpm-workspace.yaml"
      ],
      "churn": 139,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 21,
        "tests": 0,
        "ratio": 0,
        "packages": [
          {
            "package": "apps/reader",
            "production": 21,
            "tests": 0,
            "ratio": 0
          }
        ]
      },
      "reviewed": false,
      "points": 20,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #391 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/391",
          "pr": 391,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "tests",
          "why": "PR #391, a first contribution, changed 21 production lines in apps/reader with 0 test lines (0.00): below 0.2",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/391/files#diff-a39909f15b47b4a186ddd786e107944eff1c3856b75a4696456a81247a2fde5f",
          "file": "apps/reader/src/routes/+layout.svelte",
          "pr": 391,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #391 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/391/files#diff-b40b17c22411e18933bba1b4e8179db964c687df979595ec583f832eab50c029",
          "file": "apps/reader/src/routes/(course-reader)/search/[courseid]/+page.svelte",
          "pr": 391,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 392,
      "sha": "2a2a59281e6fb89f50e14773e71eb55d73a03896",
      "title": "docs(contributing): say to delete leftover per-app .env files",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/392",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "CONTRIBUTING.md"
      ],
      "churn": 1,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 0,
      "deductions": []
    },
    {
      "pr": 393,
      "sha": "baa624ba8aebd91c67af4dd3bf2674a9b8847d4e",
      "title": "chore(connect): drop the backward-compat type aliases",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/393",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "packages/svelte/connect/src/index.ts",
        "packages/svelte/connect/src/services/connect.svelte.ts",
        "packages/svelte/connect/src/types.ts",
        "packages/svelte/ui-navigators/src/buttons/CourseSentimentButton.svelte"
      ],
      "churn": 23,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 23,
        "tests": 0,
        "ratio": 0,
        "packages": [
          {
            "package": "packages/svelte/connect",
            "production": 20,
            "tests": 0,
            "ratio": 0
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 3,
            "tests": 0,
            "ratio": 0
          }
        ]
      },
      "reviewed": true,
      "points": 20,
      "deductions": [
        {
          "points": 10,
          "rule": "tests",
          "why": "PR #393, a first contribution, changed 20 production lines in packages/svelte/connect with 0 test lines (0.00); 3 production lines in packages/svelte/ui-navigators with 0 test lines (0.00): below 0.2",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/393/files#diff-d4710bec8228731b73dbe92d01ce27bd9f9307b9e83207792a3c513c93eac00f",
          "file": "packages/svelte/connect/src/types.ts",
          "pr": 393,
          "author": "Claude"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #393 changed Reader but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/393/files#diff-ab5233bd8376abf71bd2a266923a8aa4814253c9ac7b723ff77e516ddec43ffc",
          "file": "packages/svelte/connect/src/index.ts",
          "pr": 393,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 394,
      "sha": "3158c1504bd35eb80bc997e8bbab588321b69307",
      "title": "ci: type-check apps/time as a blocking step",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/394",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/workflows/ci.yml",
        "CONTRIBUTING.md",
        "guides/testing/TESTING-OVERVIEW.md",
        "guides/testing/TESTING.md",
        "package.json"
      ],
      "churn": 12,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 0,
      "deductions": []
    },
    {
      "pr": 395,
      "sha": "b35eddd742f11a3b1f4709f6f422f168297467fc",
      "title": "docs(reader): rewrite the stale README",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/395",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "apps/reader/README.md",
        "tests/completeness/known-gaps.txt"
      ],
      "churn": 70,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 13,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #395 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/395/files#diff-d5200a5aa732e1caa4ad64bf27219a0e12d0c7bfe62774cb4be8285158de8e69",
          "file": "apps/reader/README.md",
          "pr": 395,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 397,
      "sha": "1fc8304f79fb790f3593e4045939fdae507b5c87",
      "title": "fix(reader): keep footer at viewport bottom on short pages (screenshot)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/397",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "packages/svelte/ui-navigators/src/TutorsShell.svelte",
        "tests/bdd/features/ui/shell-and-navigation.feature"
      ],
      "churn": 33,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 2,
        "tests": 31,
        "ratio": 15.5,
        "packages": [
          {
            "package": "packages/svelte/ui-navigators",
            "production": 2,
            "tests": 9,
            "ratio": 4.5
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #397 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/397",
          "pr": 397,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #397 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/397/files#diff-6e0d83696317a7dd434a0f962ec82a7debb04a718f3885992316f95ec9b82733",
          "file": "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
          "pr": 397,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 396,
      "sha": "4993e8671b35758a47ab7cfa30e9e8e2377ef52b",
      "title": "feat(tour): walk the whole shell and the cards on the page",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/396",
      "direct": false,
      "release": false,
      "author": "Eamonn de Leastar",
      "firstContribution": false,
      "files": [
        "apps/reader/src/routes/(home)/+page.svelte",
        "apps/reader/src/routes/(home)/CourseVisitCard.svelte",
        "apps/reader/tests/e2e/course-tools.spec.ts",
        "packages/svelte/ui-components/src/learning-objects/layout/Card.svelte",
        "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
        "packages/svelte/ui-navigators/src/LayoutMenu.svelte",
        "packages/svelte/ui-navigators/src/MainNavigator.svelte",
        "packages/svelte/ui-navigators/src/buttons/EditCoursButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/EducatorControlButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/InfoButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/OnlineButton.svelte",
        "packages/svelte/ui-navigators/src/buttons/WhiteboardButton.svelte",
        "packages/svelte/ui-primitives/src/components/TourOverlay.svelte",
        "packages/svelte/utils/i18n/src/messages/de.ts",
        "packages/svelte/utils/i18n/src/messages/en.ts",
        "packages/svelte/utils/i18n/src/messages/es.ts",
        "packages/svelte/utils/i18n/src/messages/fr.ts",
        "packages/svelte/utils/i18n/src/messages/ga.ts",
        "packages/svelte/utils/i18n/src/messages/it.ts",
        "packages/svelte/utils/tour/src/index.ts",
        "packages/svelte/utils/tour/src/steps.ts",
        "packages/svelte/utils/tour/src/tour-service.svelte.ts",
        "tests/bdd/features/developer/guided-tour.feature",
        "tests/bdd/features/ui/course-tools.feature",
        "tests/bdd/steps/developer/guided-tour.steps.ts",
        "tests/suite-health/coverage-floors.json"
      ],
      "churn": 1274,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 805,
        "tests": 469,
        "ratio": 0.58,
        "packages": [
          {
            "package": "apps/reader",
            "production": 3,
            "tests": 469,
            "ratio": 156.33
          },
          {
            "package": "packages/svelte/ui-components",
            "production": 4,
            "tests": 317,
            "ratio": 79.25
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 68,
            "tests": 317,
            "ratio": 4.66
          },
          {
            "package": "packages/svelte/ui-primitives",
            "production": 63,
            "tests": 317,
            "ratio": 5.03
          },
          {
            "package": "packages/svelte/utils",
            "production": 667,
            "tests": 317,
            "ratio": 0.48
          }
        ]
      },
      "reviewed": false,
      "points": 10,
      "deductions": [
        {
          "points": 0,
          "rule": "review",
          "floor": true,
          "why": "PR #396 was merged with no approving review",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/396",
          "pr": 396,
          "author": "Eamonn de Leastar"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #396 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/396/files#diff-3b5918b61402a5d8e4434c57f5209512329c5854280634c7aee3ae773f5886a1",
          "file": "apps/reader/src/routes/(home)/+page.svelte",
          "pr": 396,
          "author": "Eamonn de Leastar"
        }
      ]
    },
    {
      "pr": 398,
      "sha": "0efbd294612a10ef268b34748cb94bdfab7d0e4b",
      "title": "docs: add OpenSSF Baseline badge to README",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/398",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "README.md"
      ],
      "churn": 4,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 0,
      "deductions": []
    },
    {
      "pr": 401,
      "sha": "fa9e38fcd5fdf7935e7ffbb93e9b15ef7a1297a1",
      "title": "README: point at the daily A3 and the readiness page",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/401",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "README.md"
      ],
      "churn": 4,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 0,
      "deductions": []
    },
    {
      "pr": 411,
      "sha": "a5796e9ca8745081f1006ef36d55546a9f04cf06",
      "title": "feat: implement holopin badge earning",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/411",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        ".github/holopin.yml"
      ],
      "churn": 5,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 0,
      "deductions": []
    },
    {
      "pr": 413,
      "sha": "10270f5b776884d3258857b050875d2e952a78a7",
      "title": "docs: propose a repository root organised by concern",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/413",
      "direct": false,
      "release": false,
      "author": "Eamonn de Leastar",
      "firstContribution": false,
      "files": [
        "docs/REPO-STRUCTURE-PROPOSAL.md"
      ],
      "churn": 91,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 0,
      "deductions": []
    },
    {
      "pr": 412,
      "sha": "a40307aa195365d9ac4b8126941e18640817eb2d",
      "title": "chore(deps): combine Dependabot bumps #402 #403 #404 #406 #407 #410",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/412",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "package.json",
        "packages/svelte/course/package.json",
        "packages/svelte/ui-components/package.json",
        "packages/svelte/ui-navigators/package.json",
        "packages/svelte/ui-primitives/package.json",
        "pnpm-lock.yaml"
      ],
      "churn": 514,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 25,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #412 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/412/files#diff-d8d4a3228ed544cf67334429cc40ce190756f0943bfa969d6b7368ceab233baa",
          "file": "packages/svelte/course/package.json",
          "pr": 412,
          "author": "Claude"
        },
        {
          "points": 5,
          "rule": "dependency",
          "why": "PR #412 moves @sveltejs/package 2.5.8 → 3.0.0 in packages/svelte/ui-components: a major bump, ground the journeys may not cover",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/412/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
          "file": "pnpm-lock.yaml",
          "pr": 412,
          "author": "Claude"
        },
        {
          "points": 5,
          "rule": "dependency",
          "why": "PR #412 moves @sveltejs/package 2.5.8 → 3.0.0 in packages/svelte/ui-navigators: a major bump, ground the journeys may not cover",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/412/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
          "file": "pnpm-lock.yaml",
          "pr": 412,
          "author": "Claude"
        },
        {
          "points": 5,
          "rule": "dependency",
          "why": "PR #412 moves @sveltejs/package 2.5.8 → 3.0.0 in packages/svelte/ui-primitives: a major bump, ground the journeys may not cover",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/412/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
          "file": "pnpm-lock.yaml",
          "pr": 412,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 415,
      "sha": "7c5f248269445fad730e65054c937bc5dcc7f675",
      "title": "chore(infra): add root .editorconfig and .prettierrc",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/415",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".editorconfig",
        ".prettierignore",
        ".prettierrc",
        "CONTRIBUTING.md",
        "package.json",
        "pnpm-lock.yaml"
      ],
      "churn": 81,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 0,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 0,
      "deductions": []
    },
    {
      "pr": 417,
      "sha": "951364e91e8b5115b9011cb0ca945b6a416aac3d",
      "title": "test(auth): pin sign-in and session behaviour before leaving Auth.js (#416 phase 0)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/417",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "apps/reader/src/hooks.server.ts",
        "guides/specifications/README.md",
        "guides/specifications/auth-integration.md",
        "guides/testing/EARS-METHODOLOGY.md",
        "tests/bdd/features/shared/sign-in-session.feature",
        "tests/bdd/steps/shared/sign-in-session.steps.ts",
        "tests/bdd/support/reader-auth.ts"
      ],
      "churn": 654,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 22,
        "tests": 599,
        "ratio": 27.23,
        "packages": [
          {
            "package": "apps/reader",
            "production": 22,
            "tests": 599,
            "ratio": 27.23
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #417 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/417/files#diff-d6d421ccc99e28b6214f7df730798547515a524700fe6758ff2aaa6b7cdd8856",
          "file": "apps/reader/src/hooks.server.ts",
          "pr": 417,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 418,
      "sha": "51d8c300e1998a3d7dd5eefd88835323fc02f9ce",
      "title": "feat(types): add @tutors/tutors-types shared types package and adoption plan",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/418",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".dependency-cruiser.cjs",
        "deno.json",
        "etc/tutors-model-lib.api.md",
        "etc/tutors-types.api.md",
        "guides/README.md",
        "guides/SHARED-TYPES.md",
        "packages/jsr/types/README.md",
        "packages/jsr/types/deno.json",
        "packages/jsr/types/package.json",
        "packages/jsr/types/src/events.ts",
        "packages/jsr/types/src/index.ts",
        "packages/jsr/types/src/learner.ts",
        "packages/jsr/types/src/learning-objects.ts",
        "packages/jsr/types/src/ports.ts",
        "packages/jsr/types/src/rows.ts",
        "pnpm-lock.yaml",
        "scripts/api-surface.ts",
        "tests/architecture/dependency-rules.test.ts",
        "tests/architecture/fixtures/workspace/packages/jsr/types/src/index.ts",
        "tests/architecture/fixtures/workspace/packages/jsr/types/src/kind.ts",
        "tests/architecture/fixtures/workspace/packages/jsr/types/src/reaches-out.ts",
        "tests/bdd/features/developer/shared-types.feature",
        "tests/bdd/steps/developer/shared-types.steps.ts",
        "tests/unit/types/fixtures/compat.ts",
        "tests/unit/types/tutors-types.test.ts",
        "vitest.aliases.ts"
      ],
      "churn": 973,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 335,
        "tests": 326,
        "ratio": 0.97,
        "packages": [
          {
            "package": "packages/jsr/types",
            "production": 335,
            "tests": 326,
            "ratio": 0.97
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #418 changed Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/418/files#diff-9bf0b9b665dc6e3c59d7f36edff3071095d5a6714d8916aea98f33db1f4e6985",
          "file": "etc/tutors-model-lib.api.md",
          "pr": 418,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 400,
      "sha": "3b9e45610aafec4348114df2fd8ac9d022eef3a2",
      "title": "feat(shell): card the open learning object in the side menu (#399)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/400",
      "direct": false,
      "release": false,
      "author": "Eamonn de Leastar",
      "firstContribution": false,
      "files": [
        "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "packages/svelte/themes/src/index.ts",
        "packages/svelte/themes/src/styles/lo-colours.ts",
        "packages/svelte/ui-components/src/learning-objects/layout/Card.svelte",
        "packages/svelte/ui-components/src/learning-objects/structure/Composite.svelte",
        "packages/svelte/ui-components/src/learning-objects/structure/Context.svelte",
        "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
        "packages/svelte/ui-navigators/src/MainNavigator.svelte",
        "tests/bdd/features/ui/shell-and-navigation.feature",
        "tests/e2e-stack/journeys/journeys.ts",
        "tests/performance/bundle-budgets.json",
        "tests/suite-health/coverage-floors.json"
      ],
      "churn": 389,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 190,
        "tests": 199,
        "ratio": 1.05,
        "packages": [
          {
            "package": "packages/svelte/themes",
            "production": 41,
            "tests": 60,
            "ratio": 1.46
          },
          {
            "package": "packages/svelte/ui-components",
            "production": 50,
            "tests": 60,
            "ratio": 1.2
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 99,
            "tests": 60,
            "ratio": 0.61
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #400 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/400/files#diff-6e0d83696317a7dd434a0f962ec82a7debb04a718f3885992316f95ec9b82733",
          "file": "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
          "pr": 400,
          "author": "Eamonn de Leastar"
        }
      ]
    },
    {
      "pr": 420,
      "sha": "7d39101eb0e19c760f2f89c4ff8f59c71ebc9b1f",
      "title": "fix(a11y): give topic pages a hidden level-1 heading",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/420",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "packages/svelte/ui-components/src/learning-objects/structure/Composite.svelte",
        "tests/bdd/features/ui/shell-and-navigation.feature"
      ],
      "churn": 30,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 6,
        "tests": 24,
        "ratio": 4,
        "packages": [
          {
            "package": "packages/svelte/ui-components",
            "production": 6,
            "tests": 9,
            "ratio": 1.5
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #420 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/420/files#diff-6e0d83696317a7dd434a0f962ec82a7debb04a718f3885992316f95ec9b82733",
          "file": "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
          "pr": 420,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 421,
      "sha": "c1d910d174446374fa7a2e1a941275cd35e46b75",
      "title": "test(generator): hold tutors.json to a schema, EARS Rules and earlier releases (none)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/421",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/workflows/ci.yml",
        ".prettierignore",
        "etc/tutors-types.api.md",
        "guides/SHARED-TYPES.md",
        "package.json",
        "packages/jsr/types/src/index.ts",
        "packages/jsr/types/src/tutors-json.ts",
        "packages/jsr/types/tutors-json.schema.json",
        "pnpm-lock.yaml",
        "scripts/checks/generator-diff.ts",
        "scripts/checks/lib/tutors-json.ts",
        "scripts/generate-tutors-json-schema.ts",
        "tests/TESTING.md",
        "tests/architecture/known-knip.txt",
        "tests/bdd/features/course/course-json-history.feature",
        "tests/bdd/features/generator/course-json.feature",
        "tests/bdd/steps/course/course-json-history.steps.ts",
        "tests/bdd/steps/generator/course-json.steps.ts",
        "tests/contract/course/course-json.contract.test.ts",
        "tests/contract/support/schema-snapshots.ts",
        "tests/contract/support/schemas.ts",
        "tests/fixtures/tutors-json-history/4.1.0/tutors.json",
        "tests/fixtures/tutors-json-history/4.2.0/tutors.json",
        "tests/fixtures/tutors-json-history/4.2.20/tutors.json",
        "tests/fixtures/tutors-json-history/5.0.0/tutors.json",
        "tests/fixtures/tutors-json-history/5.1.2/tutors.json",
        "tests/fixtures/tutors-json-history/5.2.3/tutors.json",
        "tests/fixtures/tutors-json-history/5.3.0/tutors.json",
        "tests/fixtures/tutors-json-history/build.ts",
        "tests/fixtures/tutors-json-history/versions.json",
        "tests/fuzz/schema-driven.fuzz.test.ts",
        "tests/generator/corpus.yaml",
        "tests/generator/corpus/synthetic-portfolio/course.md",
        "tests/generator/corpus/synthetic-portfolio/course.png",
        "tests/generator/corpus/synthetic-portfolio/properties.yaml",
        "tests/generator/corpus/synthetic-portfolio/topic-01-semester-1/semester-1.md",
        "tests/generator/corpus/synthetic-portfolio/topic-01-semester-1/web-databases/web.md",
        "tests/generator/corpus/synthetic-portfolio/topic-01-semester-1/web-databases/weburl",
        "tests/generator/corpus/synthetic-portfolio/topic-01-semester-1/web-programming/programming.png",
        "tests/generator/corpus/synthetic-portfolio/topic-01-semester-1/web-programming/web.md",
        "tests/generator/corpus/synthetic-portfolio/topic-01-semester-1/web-programming/weburl",
        "tests/generator/corpus/synthetic-portfolio/topic-02-semester-2/semester-2.md",
        "tests/generator/corpus/synthetic-portfolio/topic-02-semester-2/web-full-stack/web.md",
        "tests/generator/corpus/synthetic-portfolio/topic-02-semester-2/web-full-stack/weburl",
        "tests/mutation/schema-snapshot.test.ts",
        "tests/suite-health/coverage-floors.json",
        "tests/support/synthetic-course.ts",
        "tests/unit/gen/asset-handling.test.ts",
        "tests/unit/gen/course-builder.test.ts",
        "tests/unit/gen/course-generation.test.ts",
        "tests/unit/gen/lo-generation.test.ts",
        "tests/unit/gen/validation.test.ts"
      ],
      "churn": 2332,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 223,
        "tests": 1503,
        "ratio": 6.74,
        "packages": [
          {
            "package": "packages/jsr/types",
            "production": 223,
            "tests": 1503,
            "ratio": 6.74
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #421 changed Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/421/files#diff-76dfd20a707b53fb10326e7db01cf138b29acba1732e4a6bdb1f49765dd262a6",
          "file": "etc/tutors-types.api.md",
          "pr": 421,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 423,
      "sha": "82d430b4a36bf7658d33a19051c8795ff462db40",
      "title": "test(generator): mutation-test the course and resource builders",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/423",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "stryker.config.json",
        "tests/mutation/mutation-floors.json",
        "tests/mutation/nightly-mutation-floors.json",
        "tests/suite-health/coverage-floors.json",
        "tests/unit/gen/course-builder-mutations.test.ts"
      ],
      "churn": 249,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 245,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 0,
      "deductions": []
    },
    {
      "pr": 414,
      "sha": "ff4fe9c5bba52ea1863ee8c7ffc5b964d4a4b4a3",
      "title": "Stop the reader paying for realtime it never reads",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/414",
      "direct": false,
      "release": false,
      "author": "Eamonn de Leastar",
      "firstContribution": false,
      "files": [
        "apps/reader/src/routes/(course-reader)/+layout.svelte",
        "packages/svelte/community/src/services/presence.svelte.ts",
        "packages/svelte/connect/src/services/connect.svelte.ts",
        "packages/svelte/connect/src/types.ts",
        "tests/bdd/features/student/learning-progress.feature",
        "tests/bdd/features/student/live-presence.feature",
        "tests/bdd/steps/student/learning-progress.steps.ts",
        "tests/bdd/steps/student/live-presence.steps.ts",
        "tests/bdd/support/connect.ts",
        "tests/bdd/support/supabase-recorder.ts",
        "tests/conformance/build-identity.test.ts",
        "tests/unit/community/presence-broadcast.test.ts"
      ],
      "churn": 293,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 61,
        "tests": 232,
        "ratio": 3.8,
        "packages": [
          {
            "package": "apps/reader",
            "production": 4,
            "tests": 232,
            "ratio": 58
          },
          {
            "package": "packages/svelte/community",
            "production": 25,
            "tests": 232,
            "ratio": 9.28
          },
          {
            "package": "packages/svelte/connect",
            "production": 32,
            "tests": 232,
            "ratio": 7.25
          }
        ]
      },
      "reviewed": true,
      "points": 15,
      "deductions": [
        {
          "points": 5,
          "rule": "ownership",
          "why": "packages/svelte/connect/src/services/connect.svelte.ts had 4 authors this release (PR #297, PR #393, PR #414, PR #429, PR #438, PR #466, PR #428): no one holds the whole picture",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/414/files#diff-fd4035ac7c862123cdae65175cc120073c7245aa50e8aab37b76da2aaefd542b",
          "file": "packages/svelte/connect/src/services/connect.svelte.ts",
          "pr": 414,
          "author": "Eamonn de Leastar"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #414 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/414/files#diff-7510afa4360db59ba2dbf1eac45bcffc9ccd9c47da1077089ee4ce5dcddc98d9",
          "file": "apps/reader/src/routes/(course-reader)/+layout.svelte",
          "pr": 414,
          "author": "Eamonn de Leastar"
        }
      ]
    },
    {
      "pr": 429,
      "sha": "a5d00c5dbd7ae766f550ef74c4ecf2fc8b66f9b3",
      "title": "perf: reduce Supabase Realtime message volume (network)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/429",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "ARCHITECTURE.md",
        "apps/live/src/routes/+page.svelte",
        "apps/live/src/routes/[courseid]/+page.svelte",
        "apps/reader/src/routes/(course-reader)/+layout.svelte",
        "apps/reader/static/excalidraw-editor.html",
        "guides/WHITEBOARD.md",
        "packages/svelte/community/src/services/live.svelte.ts",
        "packages/svelte/community/src/services/presence.svelte.ts",
        "packages/svelte/community/src/types.svelte.ts",
        "packages/svelte/connect/src/services/connect.svelte.ts",
        "tests/bdd/features/shared/realtime-usage.feature",
        "tests/bdd/steps/live/presence-tracking.steps.ts",
        "tests/bdd/steps/shared/realtime-usage.steps.ts",
        "tests/bdd/steps/student/live-presence.steps.ts",
        "tests/bdd/support/connect.ts",
        "tests/bdd/support/supabase-recorder.ts",
        "tests/bdd/support/whiteboard-editor.ts",
        "tests/suite-health/coverage-floors.json",
        "tests/unit/community/presence-broadcast.test.ts"
      ],
      "churn": 1006,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 151,
        "tests": 767,
        "ratio": 5.08,
        "packages": [
          {
            "package": "apps/live",
            "production": 23,
            "tests": 767,
            "ratio": 33.35
          },
          {
            "package": "apps/reader",
            "production": 8,
            "tests": 767,
            "ratio": 95.88
          },
          {
            "package": "packages/svelte/community",
            "production": 106,
            "tests": 767,
            "ratio": 7.24
          },
          {
            "package": "packages/svelte/connect",
            "production": 14,
            "tests": 767,
            "ratio": 54.79
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #429 changed Reader, Live, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/429/files#diff-74bbf420b89833fb8ca4a118f46141d27df4c2789134a3e8a730f28cf330bfc4",
          "file": "apps/live/src/routes/+page.svelte",
          "pr": 429,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 438,
      "sha": "ee66461cfe8e2ccbfc400a0682082295d79cb81c",
      "title": "refactor(auth): isolate Auth.js behind the identity boundary",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/438",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        ".dependency-cruiser.cjs",
        "README.md",
        "apps/reader/README.md",
        "apps/reader/package.json",
        "apps/reader/src/app.d.ts",
        "apps/reader/src/hooks.server.ts",
        "apps/reader/src/routes/+layout.server.ts",
        "apps/reader/src/routes/+layout.svelte",
        "deno.json",
        "etc/identity.api.md",
        "guides/specifications/auth-integration.md",
        "packages/jsr/identity/deno.json",
        "packages/jsr/identity/package.json",
        "packages/jsr/identity/src/index.ts",
        "packages/svelte/app-config/src/vite.js",
        "packages/svelte/connect/package.json",
        "packages/svelte/connect/src/services/connect.svelte.ts",
        "packages/svelte/connect/src/types.ts",
        "packages/svelte/identity-sveltekit/package.json",
        "packages/svelte/identity-sveltekit/src/client.ts",
        "packages/svelte/identity-sveltekit/src/index.server.ts",
        "pnpm-lock.yaml",
        "scripts/api-surface.ts",
        "tests/architecture/dependency-rules.test.ts",
        "tests/architecture/fixtures/workspace/apps/reader/src/lib/Leak.svelte",
        "tests/architecture/fixtures/workspace/apps/reader/src/lib/identity-barrel.ts",
        "tests/architecture/fixtures/workspace/apps/reader/src/lib/leak.client.ts",
        "tests/architecture/fixtures/workspace/apps/reader/src/lib/provider.ts",
        "tests/architecture/fixtures/workspace/apps/reader/src/lib/secret-barrel.ts",
        "tests/architecture/fixtures/workspace/apps/reader/src/lib/secret.client.ts",
        "tests/architecture/fixtures/workspace/external/$env/dynamic/private.ts",
        "tests/architecture/fixtures/workspace/external/@auth/sveltekit/index.ts",
        "tests/architecture/fixtures/workspace/external/better-auth/index.ts",
        "tests/architecture/fixtures/workspace/external/supabase.ts",
        "tests/architecture/fixtures/workspace/external/sveltekit.ts",
        "tests/architecture/fixtures/workspace/packages/jsr/identity/src/database.ts",
        "tests/architecture/fixtures/workspace/packages/jsr/identity/src/framework.ts",
        "tests/architecture/fixtures/workspace/packages/svelte/connect/src/provider.ts",
        "tests/architecture/fixtures/workspace/packages/svelte/identity-sveltekit/src/index.server.ts",
        "tests/architecture/fixtures/workspace/packages/svelte/identity-sveltekit/src/provider.client.ts",
        "tests/bdd/features/shared/sign-in-session.feature",
        "tests/bdd/steps/instructor/student-engagement.steps.ts",
        "tests/bdd/steps/instructor/whitelist-management.steps.ts",
        "tests/bdd/steps/live/presence-tracking.steps.ts",
        "tests/bdd/steps/shared/authentication.steps.ts",
        "tests/bdd/steps/shared/realtime-usage.steps.ts",
        "tests/bdd/steps/shared/sign-in-session.steps.ts",
        "tests/bdd/steps/student/learning-progress.steps.ts",
        "tests/bdd/steps/student/live-presence.steps.ts",
        "tests/bdd/support/connect.ts",
        "tests/bdd/support/reader-auth.ts",
        "tests/suite-health/coverage-floors.json",
        "tests/unit/connect/course-visit-locks.test.ts",
        "tests/unit/identity/authjs-adapter.test.ts",
        "vitest.aliases.ts"
      ],
      "churn": 679,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 239,
        "tests": 252,
        "ratio": 1.05,
        "packages": [
          {
            "package": "apps/reader",
            "production": 88,
            "tests": 252,
            "ratio": 2.86
          },
          {
            "package": "packages/jsr/identity",
            "production": 19,
            "tests": 252,
            "ratio": 13.26
          },
          {
            "package": "packages/svelte/app-config",
            "production": 3,
            "tests": 252,
            "ratio": 84
          },
          {
            "package": "packages/svelte/connect",
            "production": 31,
            "tests": 252,
            "ratio": 8.13
          },
          {
            "package": "packages/svelte/identity-sveltekit",
            "production": 98,
            "tests": 252,
            "ratio": 2.57
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #438 changed Reader, Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/438/files#diff-d5200a5aa732e1caa4ad64bf27219a0e12d0c7bfe62774cb4be8285158de8e69",
          "file": "apps/reader/README.md",
          "pr": 438,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 448,
      "sha": "591c54e16694069452246faf89a9396346eaf06b",
      "title": "SLOs per app, with burn-rate alerts generated from them (#170)",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/448",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/workflows/release-claims.yml",
        "CHANGELOG.md",
        "CONTRIBUTING.md",
        "deploy/k8s/components/servicemonitor/servicemonitor.yaml",
        "docs/slo.md",
        "observability/grafana/provisioning/alerting/alerts.yml",
        "observability/grafana/provisioning/alerting/contact-points.yml",
        "observability/grafana/provisioning/alerting/notification-policies.yml",
        "package.json",
        "release/README.md",
        "release/claims.yaml",
        "release/slo.yaml",
        "scripts/checks/release-claims.ts",
        "scripts/checks/slo.ts",
        "scripts/release-claims-draft.ts",
        "tests/bdd/features/developer/service-level-objectives.feature",
        "tests/bdd/steps/developer/service-level-objectives.steps.ts",
        "tests/conformance/fixtures/faulty-image/server.mjs",
        "tests/conformance/release-claims.test.ts",
        "tests/observability/observability-contracts.test.ts"
      ],
      "churn": 1756,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 275,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #448 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/448/files#diff-e45c160249aaa8f8fadc903bc291fe52ed2aa247a3f3eb0595ebd1436418e7fa",
          "file": "deploy/k8s/components/servicemonitor/servicemonitor.yaml",
          "pr": 448,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 459,
      "sha": "6be2a46703eb798948e4f2baa47d4a53b0f94e8c",
      "title": "test(auth): verify reader sessions in browser tests",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/459",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "apps/reader/README.md",
        "apps/reader/playwright.config.ts",
        "apps/reader/tests/e2e/authentication.spec.ts",
        "apps/reader/tests/e2e/course-tools.spec.ts",
        "apps/reader/tests/e2e/oauth-preload.mjs",
        "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "apps/reader/tests/e2e/support.ts",
        "guides/testing/TESTING-OVERVIEW.md",
        "guides/testing/TESTING.md",
        "tests/bdd/support/reader-auth.ts",
        "tests/bdd/support/reader-oauth.mjs",
        "tests/fixtures/reader-session/package.json",
        "tests/fixtures/reader-session/serve.mjs",
        "tests/fixtures/reader-session/src/app.html",
        "tests/fixtures/reader-session/src/routes/protected/+server.js",
        "tests/fixtures/reader-session/src/routes/realtime/v1/[...path]/+server.js",
        "tests/fixtures/reader-session/src/routes/rest/v1/[...path]/+server.js",
        "tests/fixtures/reader-session/svelte.config.js",
        "tests/fixtures/reader-session/vite.config.js",
        "tests/unit/identity/reader-oauth-fixture.test.ts"
      ],
      "churn": 420,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 28,
        "tests": 370,
        "ratio": 13.21,
        "packages": [
          {
            "package": "apps/reader",
            "production": 28,
            "tests": 370,
            "ratio": 13.21
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #459 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/459/files#diff-d5200a5aa732e1caa4ad64bf27219a0e12d0c7bfe62774cb4be8285158de8e69",
          "file": "apps/reader/README.md",
          "pr": 459,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 461,
      "sha": "f706550ac100069ad6136987ff868b156ce470eb",
      "title": "feat(auth): add opt-in Better Auth on Kit 2",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/461",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        ".dependency-cruiser.cjs",
        ".env.example",
        ".github/workflows/ci.yml",
        "README.md",
        "apps/reader/playwright.config.ts",
        "apps/reader/src/app.d.ts",
        "apps/reader/src/hooks.server.ts",
        "apps/reader/src/lib/env.ts",
        "apps/reader/src/lib/server/auth-mode.ts",
        "apps/reader/src/routes/+layout.server.ts",
        "apps/reader/src/routes/+layout.svelte",
        "apps/reader/tests/e2e/authentication.spec.ts",
        "apps/reader/tests/e2e/oauth-preload.mjs",
        "apps/reader/tests/e2e/support.ts",
        "deploy/README.md",
        "deploy/k8s/base/configmap.yaml",
        "guides/identity-rollout.md",
        "guides/specifications/auth-integration.md",
        "guides/testing/TESTING.md",
        "package.json",
        "packages/svelte/identity-sveltekit/package.json",
        "packages/svelte/identity-sveltekit/src/authjs.server.ts",
        "packages/svelte/identity-sveltekit/src/better-auth.server.ts",
        "packages/svelte/identity-sveltekit/src/client.ts",
        "packages/svelte/identity-sveltekit/src/index.server.ts",
        "packages/svelte/identity-sveltekit/src/options.ts",
        "pnpm-lock.yaml",
        "tests/architecture/dependency-rules.test.ts",
        "tests/architecture/fixtures/workspace/packages/svelte/identity-sveltekit/src/better-auth.client.ts",
        "tests/bdd/steps/shared/sign-in-session.steps.ts",
        "tests/bdd/support/reader-auth.ts",
        "tests/bdd/support/reader-oauth.mjs",
        "tests/fixtures/reader-session/built.mjs",
        "tests/security/header-contract.json",
        "tests/security/mutating-routes.txt",
        "tests/unit/identity/better-auth-adapter.test.ts",
        "tests/unit/identity/identity-client.test.ts"
      ],
      "churn": 1971,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 328,
        "tests": 1108,
        "ratio": 3.38,
        "packages": [
          {
            "package": "apps/reader",
            "production": 18,
            "tests": 1108,
            "ratio": 61.56
          },
          {
            "package": "packages/svelte/identity-sveltekit",
            "production": 310,
            "tests": 1058,
            "ratio": 3.41
          }
        ]
      },
      "reviewed": true,
      "points": 0,
      "deductions": []
    },
    {
      "pr": 463,
      "sha": "090712e94907cda02bb7928874df8bbff825f59e",
      "title": "refactor(auth): remove Auth.js after the Kit 2 cutover",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/463",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        ".dependency-cruiser.cjs",
        ".env.example",
        ".github/workflows/ci.yml",
        "ARCHITECTURE.md",
        "README.md",
        "apps/reader/README.md",
        "apps/reader/playwright.config.ts",
        "apps/reader/src/app.d.ts",
        "apps/reader/src/hooks.server.ts",
        "apps/reader/src/lib/env.ts",
        "apps/reader/src/routes/+layout.server.ts",
        "apps/reader/src/routes/+layout.svelte",
        "apps/reader/tests/e2e/authentication.spec.ts",
        "apps/reader/tests/e2e/support.ts",
        "deploy/README.md",
        "deploy/k8s/base/configmap.yaml",
        "deploy/k8s/overlays/reader/kustomization.yaml",
        "deploy/staging/.env.example",
        "docs/LOCAL-CONTAINERS.md",
        "guides/identity-rollout.md",
        "guides/specifications/auth-integration.md",
        "guides/specifications/authentication.md",
        "guides/testing/TESTING-OVERVIEW.md",
        "guides/testing/TESTING.md",
        "packages/svelte/app-config/src/vite.js",
        "packages/svelte/identity-sveltekit/package.json",
        "packages/svelte/identity-sveltekit/src/authjs.server.ts",
        "packages/svelte/identity-sveltekit/src/better-auth.server.ts",
        "packages/svelte/identity-sveltekit/src/client.ts",
        "packages/svelte/identity-sveltekit/src/index.server.ts",
        "packages/svelte/identity-sveltekit/src/options.ts",
        "packages/svelte/utils/runtime/src/clock.ts",
        "pnpm-lock.yaml",
        "scripts/checks/container-smoke.ts",
        "scripts/checks/security.ts",
        "scripts/checks/server-smoke.ts",
        "tests/TESTING.md",
        "tests/architecture/dependency-rules.test.ts",
        "tests/architecture/fixtures/workspace/apps/reader/src/lib/provider.ts",
        "tests/architecture/fixtures/workspace/external/@auth/sveltekit/index.ts",
        "tests/architecture/fixtures/workspace/packages/svelte/identity-sveltekit/src/index.server.ts",
        "tests/architecture/fixtures/workspace/packages/svelte/identity-sveltekit/src/provider.client.ts",
        "tests/bdd/features/shared/sign-in-session.feature",
        "tests/bdd/steps/instructor/student-engagement.steps.ts",
        "tests/bdd/steps/instructor/whitelist-management.steps.ts",
        "tests/bdd/steps/live/presence-tracking.steps.ts",
        "tests/bdd/steps/shared/authentication.steps.ts",
        "tests/bdd/steps/shared/sign-in-session.steps.ts",
        "tests/bdd/steps/student/learning-progress.steps.ts",
        "tests/bdd/steps/student/live-presence.steps.ts",
        "tests/bdd/support/connect.ts",
        "tests/bdd/support/reader-auth.ts",
        "tests/bdd/support/reader-oauth.mjs",
        "tests/e2e-stack/journeys/student.journey.spec.ts",
        "tests/fixtures/reader-session/better-auth-session-before-cleanup.json",
        "tests/fixtures/reader-session/built.mjs",
        "tests/security/header-contract.json",
        "tests/security/mutating-routes.txt",
        "tests/security/security.test.ts",
        "tests/support/sveltekit-stubs.ts",
        "tests/unit/identity/authjs-adapter.test.ts",
        "tests/unit/identity/better-auth-adapter.test.ts",
        "tests/unit/identity/identity-client.test.ts",
        "tests/unit/identity/reader-oauth-fixture.test.ts",
        "tests/unit/reader/auth-mode.test.ts",
        "tests/unit/utils/runtime.test.ts",
        "vitest.config.mutation-nightly.ts",
        "vitest.config.ts"
      ],
      "churn": 1112,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 133,
        "tests": 644,
        "ratio": 4.84,
        "packages": [
          {
            "package": "apps/reader",
            "production": 10,
            "tests": 644,
            "ratio": 64.4
          },
          {
            "package": "packages/svelte/app-config",
            "production": 3,
            "tests": 637,
            "ratio": 212.33
          },
          {
            "package": "packages/svelte/identity-sveltekit",
            "production": 118,
            "tests": 637,
            "ratio": 5.4
          },
          {
            "package": "packages/svelte/utils",
            "production": 2,
            "tests": 637,
            "ratio": 318.5
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #463 changed Reader, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/463/files#diff-d5200a5aa732e1caa4ad64bf27219a0e12d0c7bfe62774cb4be8285158de8e69",
          "file": "apps/reader/README.md",
          "pr": 463,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 467,
      "sha": "cc67e038e95ce9a54f3868f4cace5e855a22819a",
      "title": "docs: agree with the code (Node floor, JSR packages, specs); primitives import no community type",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/467",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "ARCHITECTURE.md",
        "README.md",
        "guides/MIGRATIONS.md",
        "guides/Release-Strategy.md",
        "guides/evolution/tutors-revolution.md",
        "guides/specifications/accessibility.md",
        "guides/specifications/error-handling.md",
        "guides/testing/EARS-METHODOLOGY.md",
        "packages/svelte/ui-primitives/package.json",
        "packages/svelte/ui-primitives/src/components/StudentCard.svelte",
        "pnpm-lock.yaml",
        "tests/architecture/dependency-rules.test.ts"
      ],
      "churn": 78,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 14,
        "tests": 33,
        "ratio": 2.36,
        "packages": [
          {
            "package": "packages/svelte/ui-primitives",
            "production": 14,
            "tests": 33,
            "ratio": 2.36
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #467 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/467/files#diff-4cdae9cd9a7c01094b583cd12b4eedbd4e72fdb3b6b78043db3b83e5f0941853",
          "file": "packages/svelte/ui-primitives/package.json",
          "pr": 467,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 464,
      "sha": "89f98343e80efbe6e42052148fdfa4519d73a403",
      "title": "refactor(kit): move shared app configuration into Vite",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/464",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "ARCHITECTURE.md",
        "README.md",
        "apps/catalogue/README.md",
        "apps/catalogue/svelte.config.js",
        "apps/live/README.md",
        "apps/live/svelte.config.js",
        "apps/reader/README.md",
        "apps/reader/svelte.config.js",
        "apps/time/README.md",
        "apps/time/svelte.config.js",
        "packages/svelte/app-config/src/svelte.js",
        "packages/svelte/app-config/src/vite.js",
        "scripts/checks/conformance.ts",
        "tests/TESTING.md",
        "tests/conformance/build-identity.test.ts",
        "tests/fixtures/reader-session/svelte.config.js",
        "tests/fixtures/reader-session/vite.config.js",
        "tests/security/security.test.ts"
      ],
      "churn": 135,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 50,
        "tests": 62,
        "ratio": 1.24,
        "packages": [
          {
            "package": "apps/catalogue",
            "production": 3,
            "tests": 62,
            "ratio": 20.67
          },
          {
            "package": "apps/live",
            "production": 3,
            "tests": 62,
            "ratio": 20.67
          },
          {
            "package": "apps/reader",
            "production": 3,
            "tests": 62,
            "ratio": 20.67
          },
          {
            "package": "apps/time",
            "production": 3,
            "tests": 62,
            "ratio": 20.67
          },
          {
            "package": "packages/svelte/app-config",
            "production": 38,
            "tests": 62,
            "ratio": 1.63
          }
        ]
      },
      "reviewed": true,
      "points": 20,
      "deductions": [
        {
          "points": 5,
          "rule": "ownership",
          "why": "apps/catalogue/svelte.config.js had 3 authors this release (PR #276, PR #282, PR #296, PR #354, PR #266, PR #464): no one holds the whole picture",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/464/files#diff-f59256a303b4024e8a8528f50c846374d823ee3e46c478100acfb0cb61cc4baf",
          "file": "apps/catalogue/svelte.config.js",
          "pr": 464,
          "author": "Jordan Harrison"
        },
        {
          "points": 5,
          "rule": "ownership",
          "why": "apps/live/svelte.config.js had 3 authors this release (PR #276, PR #282, PR #296, PR #354, PR #266, PR #464): no one holds the whole picture (and 16 more files like it, not counted again)",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/464/files#diff-895ca8af765a9765d1c30b45819e2ea87f5edc966e34f12c301ce40ae1fb1c9a",
          "file": "apps/live/svelte.config.js",
          "pr": 464,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #464 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/464/files#diff-9c75df02d09573d64deea0a822ba5807d540ccad75393b98b2feeae95f98f449",
          "file": "apps/catalogue/README.md",
          "pr": 464,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 465,
      "sha": "4a4f2e2a1b8e8e0cdbadb44023350b408fef7fc0",
      "title": "refactor(kit): use package-local lib imports",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/465",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "apps/reader/README.md",
        "apps/reader/package.json",
        "apps/reader/src/hooks.server.ts",
        "apps/time/README.md",
        "apps/time/package.json",
        "apps/time/src/lib/components/calendar/CalendarGrid.svelte",
        "apps/time/src/lib/components/calendar/CalendarMedianGrid.svelte",
        "apps/time/src/lib/components/calendar/GridCalendarModel.ts",
        "apps/time/src/lib/components/calendar/OnlineCellRenderer.ts",
        "apps/time/src/lib/components/calendar/SentimentCellRenderer.ts",
        "apps/time/src/lib/components/calendar/StudentAvatarCellRenderer.ts",
        "apps/time/src/lib/components/labs/GridLabModel.ts",
        "apps/time/src/lib/components/labs/LabsGrid.svelte",
        "apps/time/src/lib/components/labs/LabsMedianGrid.svelte",
        "apps/time/src/lib/enrichCourseUserFields.ts",
        "apps/time/src/lib/server/db/submissionsRepository.ts",
        "apps/time/src/lib/server/services/AssignmentsService.ts",
        "apps/time/src/lib/server/services/AssignmentsSyncService.ts",
        "apps/time/src/routes/+layout.svelte",
        "apps/time/src/routes/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/+layout.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/+layout.ts",
        "apps/time/src/routes/[courseid]/(calendar-lab)/assignments/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/calendar/byday/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/calendar/byweek/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/calendar/raw/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/lab/bylab/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/lab/bystep/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/lab/learning-records/+page.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/medians/+page.svelte",
        "apps/time/src/routes/[courseid]/+layout.svelte",
        "apps/time/src/routes/[courseid]/[studentid]/+page.svelte",
        "apps/time/src/routes/api/sync/+server.ts",
        "tests/bdd/steps/shared/sign-in-session.steps.ts",
        "tests/conformance/package-imports.test.ts",
        "tests/unit/identity/better-auth-adapter.test.ts"
      ],
      "churn": 110,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 72,
        "tests": 28,
        "ratio": 0.39,
        "packages": [
          {
            "package": "apps/reader",
            "production": 2,
            "tests": 28,
            "ratio": 14
          },
          {
            "package": "apps/time",
            "production": 70,
            "tests": 28,
            "ratio": 0.4
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #465 changed Time, Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/465/files#diff-d5200a5aa732e1caa4ad64bf27219a0e12d0c7bfe62774cb4be8285158de8e69",
          "file": "apps/reader/README.md",
          "pr": 465,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 466,
      "sha": "73f3cf3a7801888ad04c3aa3432f176552ef7e49",
      "title": "feat(kit): upgrade all four apps to SvelteKit 3",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        ".dependency-cruiser.cjs",
        ".github/workflows/ci.yml",
        ".github/workflows/deploy.yml",
        "Dockerfile",
        "README.md",
        "apps/catalogue/package.json",
        "apps/catalogue/src/app.html",
        "apps/catalogue/src/env.js",
        "apps/catalogue/src/hooks.client.ts",
        "apps/catalogue/src/hooks.server.ts",
        "apps/catalogue/src/routes/+layout.svelte",
        "apps/catalogue/tsconfig.json",
        "apps/live/package.json",
        "apps/live/src/app.html",
        "apps/live/src/env.js",
        "apps/live/src/hooks.client.ts",
        "apps/live/src/hooks.server.ts",
        "apps/live/src/routes/+layout.svelte",
        "apps/live/tsconfig.json",
        "apps/reader/package.json",
        "apps/reader/playwright.config.ts",
        "apps/reader/src/app.d.ts",
        "apps/reader/src/app.html",
        "apps/reader/src/env.js",
        "apps/reader/src/hooks.client.ts",
        "apps/reader/src/hooks.server.ts",
        "apps/reader/src/routes/(course-reader)/+layout.svelte",
        "apps/reader/src/routes/(course-reader)/search/[courseid]/+page.svelte",
        "apps/reader/src/routes/+layout.svelte",
        "apps/reader/tsconfig.json",
        "apps/time/package.json",
        "apps/time/src/app.html",
        "apps/time/src/env.js",
        "apps/time/src/hooks.client.ts",
        "apps/time/src/hooks.server.ts",
        "apps/time/src/lib/server/api/moodle.ts",
        "apps/time/src/lib/server/db/submissionsRepository.ts",
        "apps/time/src/lib/server/services/AssignmentsSyncService.ts",
        "apps/time/src/routes/+layout.svelte",
        "apps/time/src/routes/[courseid]/(calendar-lab)/+layout.ts",
        "apps/time/src/routes/[courseid]/[studentid]/+page.ts",
        "apps/time/tsconfig.json",
        "compose.yaml",
        "deploy/README.md",
        "deploy/k8s/base/configmap.yaml",
        "deploy/k8s/base/kustomization.yaml",
        "deploy/k8s/components/ingress/kustomization.yaml",
        "deploy/k8s/components/route/kustomization.yaml",
        "deploy/k8s/next/catalogue/kustomization.yaml",
        "deploy/k8s/next/live/kustomization.yaml",
        "deploy/k8s/next/reader/kustomization.yaml",
        "deploy/k8s/next/time/kustomization.yaml",
        "deploy/k8s/overlays/catalogue/kustomization.yaml",
        "deploy/k8s/overlays/live/kustomization.yaml",
        "deploy/k8s/overlays/reader/kustomization.yaml",
        "deploy/k8s/overlays/time/kustomization.yaml",
        "deploy/local/Caddyfile",
        "deploy/staging/.env.example",
        "deploy/staging/compose.yaml",
        "docs/LOCAL-CONTAINERS.md",
        "eslint.config.mjs",
        "guides/identity-rollout.md",
        "knip.json",
        "package.json",
        "packages/svelte/app-config/package.json",
        "packages/svelte/app-config/src/env.js",
        "packages/svelte/app-config/src/svelte.js",
        "packages/svelte/app-config/src/vite.js",
        "packages/svelte/community/src/services/live.svelte.ts",
        "packages/svelte/community/src/services/presence.svelte.ts",
        "packages/svelte/community/src/utils/error-transport.ts",
        "packages/svelte/community/src/utils/supabase-client.ts",
        "packages/svelte/connect/src/services/connect.svelte.ts",
        "packages/svelte/connect/src/services/localStorageProfile.ts",
        "packages/svelte/course/src/ambient.d.ts",
        "packages/svelte/course/src/markdown/services/markdown.svelte.ts",
        "packages/svelte/identity-sveltekit/package.json",
        "packages/svelte/identity-sveltekit/src/index.server.ts",
        "packages/svelte/themes/package.json",
        "packages/svelte/ui-components/package.json",
        "packages/svelte/ui-components/src/learning-objects/content/notebook/NotebookCodeEditor.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/talk/TalkAdobe.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/talk/TalkClient.svelte",
        "packages/svelte/ui-components/src/learning-objects/content/whiteboard/WhiteboardViewer.svelte",
        "packages/svelte/ui-navigators/package.json",
        "packages/svelte/ui-navigators/src/buttons/WhiteboardButton.svelte",
        "packages/svelte/ui-navigators/src/tutors-connect/AnonProfile.svelte",
        "packages/svelte/ui-primitives/package.json",
        "packages/svelte/ui-primitives/src/components/TourOverlay.svelte",
        "packages/svelte/ui-primitives/src/utils/site-urls.ts",
        "packages/svelte/utils/a11y/src/reduced-motion.svelte.ts",
        "packages/svelte/utils/i18n/package.json",
        "packages/svelte/utils/metrics/src/middleware.ts",
        "packages/svelte/utils/runtime/src/clock.ts",
        "packages/svelte/utils/tour/src/tour-service.svelte.ts",
        "pnpm-lock.yaml",
        "pnpm-workspace.yaml",
        "scripts/checks/build-identity.ts",
        "scripts/checks/conformance.ts",
        "scripts/checks/lighthouse.ts",
        "scripts/checks/load-test.ts",
        "scripts/checks/server-smoke.ts",
        "tests/architecture/dependency-rules.test.ts",
        "tests/architecture/fixtures/workspace/apps/reader/src/lib/kit3-env.client.ts",
        "tests/architecture/fixtures/workspace/external/$app/env/private.ts",
        "tests/bdd/steps/developer/guided-tour.steps.ts",
        "tests/bdd/steps/instructor/student-engagement.steps.ts",
        "tests/bdd/steps/instructor/whitelist-management.steps.ts",
        "tests/bdd/steps/live/presence-tracking.steps.ts",
        "tests/bdd/steps/shared/authentication.steps.ts",
        "tests/bdd/steps/shared/realtime-usage.steps.ts",
        "tests/bdd/steps/shared/sign-in-session.steps.ts",
        "tests/bdd/steps/student/learning-progress.steps.ts",
        "tests/bdd/steps/student/live-presence.steps.ts",
        "tests/bdd/support/connect.ts",
        "tests/bdd/support/supabase-recorder.ts",
        "tests/conformance/build-identity.test.ts",
        "tests/conformance/package-imports.test.ts",
        "tests/conformance/platform-conformance.test.ts",
        "tests/e2e-stack/README.md",
        "tests/e2e-stack/compose.yaml",
        "tests/fixtures/reader-session/built.mjs",
        "tests/fixtures/reader-session/serve-built.mjs",
        "tests/fixtures/reader-session/serve.mjs",
        "tests/fixtures/reader-session/src/env.js",
        "tests/fixtures/reader-session/vite.config.js",
        "tests/suite-health/coverage-floors.json",
        "tests/support/private-env-stub.ts",
        "tests/support/public-env-stub.ts",
        "tests/support/sveltekit-stubs.ts",
        "tests/unit/apps/error-hooks.test.ts",
        "tests/unit/community/error-transport.test.ts",
        "tests/unit/community/learning-record-increments.test.ts",
        "tests/unit/community/presence-broadcast.test.ts",
        "tests/unit/connect/all-course-access.test.ts",
        "tests/unit/connect/course-visit-locks.test.ts",
        "tests/unit/connect/local-storage-profile.test.ts",
        "tests/unit/identity/better-auth-adapter.test.ts",
        "tests/unit/markdown/markdown-service.test.ts",
        "vitest.aliases.ts"
      ],
      "churn": 1818,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 189,
        "tests": 309,
        "ratio": 1.63,
        "packages": [
          {
            "package": "apps/catalogue",
            "production": 19,
            "tests": 309,
            "ratio": 16.26
          },
          {
            "package": "apps/live",
            "production": 19,
            "tests": 309,
            "ratio": 16.26
          },
          {
            "package": "apps/reader",
            "production": 34,
            "tests": 309,
            "ratio": 9.09
          },
          {
            "package": "apps/time",
            "production": 31,
            "tests": 309,
            "ratio": 9.97
          },
          {
            "package": "packages/svelte/app-config",
            "production": 42,
            "tests": 309,
            "ratio": 7.36
          },
          {
            "package": "packages/svelte/community",
            "production": 8,
            "tests": 309,
            "ratio": 38.63
          },
          {
            "package": "packages/svelte/connect",
            "production": 6,
            "tests": 309,
            "ratio": 51.5
          },
          {
            "package": "packages/svelte/course",
            "production": 2,
            "tests": 309,
            "ratio": 154.5
          },
          {
            "package": "packages/svelte/identity-sveltekit",
            "production": 2,
            "tests": 309,
            "ratio": 154.5
          },
          {
            "package": "packages/svelte/ui-components",
            "production": 10,
            "tests": 309,
            "ratio": 30.9
          },
          {
            "package": "packages/svelte/ui-navigators",
            "production": 4,
            "tests": 309,
            "ratio": 77.25
          },
          {
            "package": "packages/svelte/ui-primitives",
            "production": 4,
            "tests": 309,
            "ratio": 77.25
          },
          {
            "package": "packages/svelte/utils",
            "production": 8,
            "tests": 309,
            "ratio": 38.63
          }
        ]
      },
      "reviewed": true,
      "points": 35,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #466 changed Reader, Live, Catalogue, Time, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-28802fbf11c83a2eee09623fb192785e7ca92a3f40602a517c011b947a1822d3",
          "file": ".github/workflows/deploy.yml",
          "pr": 466,
          "author": "Jordan Harrison"
        },
        {
          "points": 5,
          "rule": "dependency",
          "why": "PR #466 moves @sveltejs/kit 2.70.3 → 3.0.1 in apps/catalogue: a major bump, ground the journeys may not cover",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
          "file": "pnpm-lock.yaml",
          "pr": 466,
          "author": "Jordan Harrison"
        },
        {
          "points": 5,
          "rule": "dependency",
          "why": "PR #466 moves @sveltejs/kit 2.70.3 → 3.0.1 in apps/live: a major bump, ground the journeys may not cover",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
          "file": "pnpm-lock.yaml",
          "pr": 466,
          "author": "Jordan Harrison"
        },
        {
          "points": 5,
          "rule": "dependency",
          "why": "PR #466 moves @sveltejs/kit 2.70.3 → 3.0.1 in apps/reader: a major bump, ground the journeys may not cover",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
          "file": "pnpm-lock.yaml",
          "pr": 466,
          "author": "Jordan Harrison"
        },
        {
          "points": 5,
          "rule": "dependency",
          "why": "PR #466 moves @sveltejs/kit 2.70.3 → 3.0.1 in apps/time: a major bump, ground the journeys may not cover",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
          "file": "pnpm-lock.yaml",
          "pr": 466,
          "author": "Jordan Harrison"
        },
        {
          "points": 5,
          "rule": "dependency",
          "why": "PR #466 moves @sveltejs/kit 2.70.3 → 3.0.1 in packages/svelte/ui-components: a major bump, ground the journeys may not cover",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
          "file": "pnpm-lock.yaml",
          "pr": 466,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 468,
      "sha": "f0a9159a342329f90788c5cb82400207ad7dd0e8",
      "title": "fix: restore Netlify cold starts for all four apps",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/468",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        "apps/catalogue/package.json",
        "apps/live/package.json",
        "apps/reader/package.json",
        "apps/time/package.json",
        "packages/svelte/app-config/src/vite.js",
        "pnpm-lock.yaml"
      ],
      "churn": 19,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 3,
        "tests": 0,
        "ratio": 0,
        "packages": [
          {
            "package": "packages/svelte/app-config",
            "production": 3,
            "tests": 0,
            "ratio": 0
          }
        ]
      },
      "reviewed": true,
      "points": 20,
      "deductions": [
        {
          "points": 10,
          "rule": "tests",
          "why": "PR #468, a first contribution, changed 3 production lines in packages/svelte/app-config with 0 test lines (0.00): below 0.2",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/468/files#diff-41da68a108033403e04d24e3c4edc20148d7e66cac0f88b18918fc3847f9453e",
          "file": "packages/svelte/app-config/src/vite.js",
          "pr": 468,
          "author": "Jordan Harrison"
        },
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #468 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/468/files#diff-c19c016987c6b7d3f8a014d7e4df17402c3557f0741538318a2b573727ddfff4",
          "file": "apps/catalogue/package.json",
          "pr": 468,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 470,
      "sha": "f87f0f9a8a6f8c8a1823d4a117e53eb9ced19f0d",
      "title": "chore(deps): consolidate Dependabot updates and group future PRs",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/470",
      "direct": false,
      "release": false,
      "author": "Jordan Harrison",
      "firstContribution": true,
      "files": [
        ".github/dependabot.yml",
        ".github/workflows/ci.yml",
        ".github/workflows/deploy.yml",
        ".github/workflows/image-build.yml",
        ".github/workflows/nightly.yml",
        ".github/workflows/rc-validation.yml",
        ".github/workflows/release-claims.yml",
        ".github/workflows/release-dispatch.yml",
        ".github/workflows/release-harness-report.yml",
        ".github/workflows/release-testing.yml",
        "apps/catalogue/package.json",
        "apps/live/package.json",
        "apps/reader/package.json",
        "apps/reader/static/pdf.worker.min.mjs",
        "apps/time/package.json",
        "package.json",
        "packages/svelte/course/package.json",
        "packages/svelte/ui-components/package.json",
        "packages/svelte/ui-primitives/package.json",
        "pnpm-lock.yaml",
        "tests/architecture/pdf-worker.test.ts"
      ],
      "churn": 956,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 9,
        "tests": 11,
        "ratio": 1.22,
        "packages": [
          {
            "package": "apps/reader",
            "production": 9,
            "tests": 11,
            "ratio": 1.22
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #470 changed Reader, Live, Catalogue, Time, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/470/files#diff-28802fbf11c83a2eee09623fb192785e7ca92a3f40602a517c011b947a1822d3",
          "file": ".github/workflows/deploy.yml",
          "pr": 470,
          "author": "Jordan Harrison"
        }
      ]
    },
    {
      "pr": 479,
      "sha": "cd3c33997165e575b242190ccf51867ebceed2a9",
      "title": "chore(deps): vitest 5, vitest-cucumber 8, markdown-it-deflist 4; hold TypeScript at 6",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/479",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        ".github/dependabot.yml",
        "package.json",
        "packages/jsr/model/deno.json",
        "packages/jsr/model/package.json",
        "pnpm-lock.yaml",
        "tests/suite-health/coverage-floors.json",
        "tests/unit/time/tutors-time-load.test.ts",
        "vitest.config.fuzz.ts",
        "vitest.config.mutation-nightly.ts",
        "vitest.config.mutation.ts",
        "vitest.config.ts"
      ],
      "churn": 483,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 0,
        "tests": 119,
        "ratio": null,
        "packages": []
      },
      "reviewed": true,
      "points": 25,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #479 changed Shared Packages, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/479/files#diff-3a175be77e72cbc9c0ea09d9777050932ba65ef8038cda1bea5fd6181afbe68e",
          "file": "packages/jsr/model/deno.json",
          "pr": 479,
          "author": "Claude"
        },
        {
          "points": 5,
          "rule": "dependency",
          "why": "PR #479 moves @vitest/coverage-v8 4.1.11 → 5.0.4 in the root: a major bump, ground the journeys may not cover",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/479/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
          "file": "pnpm-lock.yaml",
          "pr": 479,
          "author": "Claude"
        },
        {
          "points": 5,
          "rule": "dependency",
          "why": "PR #479 moves markdown-it-deflist 3.0.1 → 4.0.0 in packages/jsr/model: a major bump, ground the journeys may not cover",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/479/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
          "file": "pnpm-lock.yaml",
          "pr": 479,
          "author": "Claude"
        },
        {
          "points": 5,
          "rule": "dependency",
          "why": "PR #479 moves vitest 4.1.11 → 5.0.4 in the root: a major bump, ground the journeys may not cover",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/479/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
          "file": "pnpm-lock.yaml",
          "pr": 479,
          "author": "Claude"
        }
      ]
    },
    {
      "pr": 428,
      "sha": "7feefea6742f297526f75fbdfcafbb4ac6268c50",
      "title": "Report a page once its navigation lands",
      "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/428",
      "direct": false,
      "release": false,
      "author": "Claude",
      "firstContribution": true,
      "files": [
        "apps/reader/src/routes/(course-reader)/+layout.svelte",
        "packages/svelte/connect/src/services/connect.svelte.ts",
        "packages/svelte/connect/src/types.ts",
        "tests/bdd/features/student/learning-progress.feature",
        "tests/bdd/steps/student/learning-progress.steps.ts",
        "tests/bdd/support/connect.ts",
        "tests/suite-health/coverage-floors.json"
      ],
      "churn": 151,
      "hotspotsTouched": [],
      "testDelta": {
        "production": 62,
        "tests": 89,
        "ratio": 1.44,
        "packages": [
          {
            "package": "apps/reader",
            "production": 20,
            "tests": 89,
            "ratio": 4.45
          },
          {
            "package": "packages/svelte/connect",
            "production": 42,
            "tests": 89,
            "ratio": 2.12
          }
        ]
      },
      "reviewed": true,
      "points": 10,
      "deductions": [
        {
          "points": 10,
          "rule": "orphan",
          "why": "PR #428 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
          "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/428/files#diff-7510afa4360db59ba2dbf1eac45bcffc9ccd9c47da1077089ee4ce5dcddc98d9",
          "file": "apps/reader/src/routes/(course-reader)/+layout.svelte",
          "pr": 428,
          "author": "Claude"
        }
      ]
    }
  ],
  "signals": {
    "churn": {
      "status": "measured",
      "apps": [
        {
          "app": "reader",
          "churn": 3755,
          "median": 98,
          "above": true,
          "history": [
            2,
            109,
            94,
            119,
            40,
            102
          ]
        },
        {
          "app": "catalogue",
          "churn": 204,
          "median": 3,
          "above": true,
          "history": [
            2,
            11,
            73,
            2,
            4,
            2
          ]
        },
        {
          "app": "live",
          "churn": 306,
          "median": 2.5,
          "above": true,
          "history": [
            2,
            3,
            73,
            2,
            4,
            2
          ]
        },
        {
          "app": "time",
          "churn": 2175,
          "median": 9.5,
          "above": true,
          "history": [
            2,
            15,
            107,
            13,
            6,
            4
          ]
        }
      ]
    },
    "hotspots": {
      "status": "measured",
      "files": [
        {
          "path": "packages/svelte/ui-primitives/src/components/LoContextTreeView.svelte",
          "releases": 3,
          "weight": 164
        }
      ],
      "touched": [
        {
          "path": "packages/svelte/ui-primitives/src/components/LoContextTreeView.svelte",
          "prs": [
            313
          ]
        }
      ]
    },
    "ownership": {
      "files": [
        {
          "path": "packages/svelte/connect/src/services/connect.svelte.ts",
          "authors": 4,
          "prs": [
            297,
            393,
            414,
            429,
            438,
            466,
            428
          ]
        },
        {
          "path": "apps/catalogue/svelte.config.js",
          "authors": 3,
          "prs": [
            276,
            282,
            296,
            354,
            266,
            464
          ]
        },
        {
          "path": "apps/live/svelte.config.js",
          "authors": 3,
          "prs": [
            276,
            282,
            296,
            354,
            266,
            464
          ]
        },
        {
          "path": "apps/reader/src/hooks.server.ts",
          "authors": 3,
          "prs": [
            282,
            283,
            297,
            417,
            438,
            461,
            463,
            465,
            466
          ]
        },
        {
          "path": "apps/reader/src/routes/(course-reader)/+layout.svelte",
          "authors": 3,
          "prs": [
            313,
            414,
            429,
            466,
            428
          ]
        },
        {
          "path": "apps/reader/svelte.config.js",
          "authors": 3,
          "prs": [
            276,
            282,
            296,
            354,
            266,
            464
          ]
        },
        {
          "path": "apps/time/svelte.config.js",
          "authors": 3,
          "prs": [
            276,
            282,
            296,
            354,
            266,
            464
          ]
        },
        {
          "path": "packages/svelte/connect/src/types.ts",
          "authors": 3,
          "prs": [
            393,
            414,
            438,
            428
          ]
        },
        {
          "path": "packages/svelte/ui-components/src/learning-objects/structure/Composite.svelte",
          "authors": 3,
          "prs": [
            313,
            330,
            400,
            420
          ]
        },
        {
          "path": "packages/svelte/ui-navigators/src/buttons/CourseSentimentButton.svelte",
          "authors": 3,
          "prs": [
            313,
            "8582ef2",
            393
          ]
        },
        {
          "path": "packages/svelte/ui-navigators/src/CourseNavigation.svelte",
          "authors": 3,
          "prs": [
            313,
            "8582ef2",
            330,
            331,
            365,
            338,
            373,
            386,
            390,
            396,
            400
          ]
        },
        {
          "path": "packages/svelte/ui-navigators/src/MainNavigator.svelte",
          "authors": 3,
          "prs": [
            313,
            318,
            330,
            331,
            365,
            338,
            373,
            396,
            400
          ]
        },
        {
          "path": "packages/svelte/ui-primitives/src/components/StudentCard.svelte",
          "authors": 3,
          "prs": [
            313,
            365,
            467
          ]
        },
        {
          "path": "packages/svelte/utils/i18n/src/messages/de.ts",
          "authors": 3,
          "prs": [
            313,
            "8582ef2",
            330,
            331,
            338,
            373,
            386,
            396
          ]
        },
        {
          "path": "packages/svelte/utils/i18n/src/messages/en.ts",
          "authors": 3,
          "prs": [
            313,
            "8582ef2",
            330,
            331,
            338,
            373,
            386,
            396
          ]
        },
        {
          "path": "packages/svelte/utils/i18n/src/messages/es.ts",
          "authors": 3,
          "prs": [
            313,
            "8582ef2",
            330,
            331,
            338,
            373,
            386,
            396
          ]
        },
        {
          "path": "packages/svelte/utils/i18n/src/messages/fr.ts",
          "authors": 3,
          "prs": [
            313,
            "8582ef2",
            330,
            331,
            338,
            373,
            386,
            396
          ]
        },
        {
          "path": "packages/svelte/utils/i18n/src/messages/ga.ts",
          "authors": 3,
          "prs": [
            313,
            "8582ef2",
            330,
            331,
            338,
            386,
            396
          ]
        },
        {
          "path": "packages/svelte/utils/i18n/src/messages/it.ts",
          "authors": 3,
          "prs": [
            313,
            "8582ef2",
            330,
            331,
            338,
            373,
            386,
            396
          ]
        }
      ]
    },
    "orphans": {
      "diffs": {
        "status": "measured",
        "source": "pnpm release:changelog --json",
        "items": [
          {
            "pr": 276,
            "sha": "790af8b",
            "title": "Consolidate .env to the repository root",
            "sections": [
              "Reader",
              "Live",
              "Catalogue",
              "Time",
              "Development"
            ]
          },
          {
            "pr": 279,
            "sha": "c5f6b79",
            "title": "Make the container spec files Quay-compatible",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 282,
            "sha": "13e7f88",
            "title": "Deterministic responses for the release harness (HARNESS_NOW, /version, stable headers)",
            "sections": [
              "Reader",
              "Live",
              "Catalogue",
              "Time",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 283,
            "sha": "8ad19f0",
            "title": "Stable log and metrics shape for release-harness A/A runs (M18, M19)",
            "sections": [
              "Reader",
              "Live",
              "Catalogue",
              "Time",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 143,
            "sha": "0d705cf",
            "title": "Container image build pipeline with Quay.io registry",
            "sections": [
              "Infrastructure"
            ]
          },
          {
            "pr": 274,
            "sha": "0cbf10a",
            "title": "A course that does not exist showed \"500 Server Error\"",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 273,
            "sha": "52b72ed",
            "title": "A Supabase error's message never reached the log",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 270,
            "sha": "50ca3c5",
            "title": "A hit in one-line content came back with no text",
            "sections": [
              "Shared Packages",
              "Development"
            ]
          },
          {
            "pr": 272,
            "sha": "3a8ab37",
            "title": "A learning object with order: 0 sorted last instead of first",
            "sections": [
              "Shared Packages",
              "Development"
            ]
          },
          {
            "pr": 271,
            "sha": "6feb90b",
            "title": "Wrong line, fence and language from the second match on",
            "sections": [
              "Shared Packages",
              "Development"
            ]
          },
          {
            "pr": 293,
            "sha": "118eb8a",
            "title": "Distinguish a 404 from an unreachable host when loading a course",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 302,
            "sha": "3871325",
            "title": "State that quizzes are a formative self-check, not assessment",
            "sections": [
              "Reader"
            ]
          },
          {
            "pr": 303,
            "sha": "e5623bd",
            "title": "Promote the judged rc image on a final tag instead of rebuilding",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 297,
            "sha": "f8ee5d2",
            "title": "Keep variable data out of log messages and guard it with a test",
            "sections": [
              "Reader",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 299,
            "sha": "020cfdc",
            "title": "Include the time app in the build check and the registry wait",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 287,
            "sha": "0554f1a",
            "title": "Add ESLint no-console rule and standardise error catching",
            "sections": [
              "Shared Packages",
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 296,
            "sha": "6b72950",
            "title": "Route the course calendar through the clock seam; keep the commit off /_app/version.json",
            "sections": [
              "Reader",
              "Live",
              "Catalogue",
              "Time",
              "Shared Packages",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 300,
            "sha": "66ad056",
            "title": "Migration expand/contract checks and artefact-tagged changelog entries",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 310,
            "sha": "3f38f2e",
            "title": "Send digests, rules_url and 5 runs to the harness (time digest on deploy)",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 135,
            "sha": "5d7283e",
            "title": "Local Grafana stack for Tutors learning insights",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 313,
            "sha": "b23f251",
            "title": "Rebuild Tutors with the Paper design system",
            "sections": [
              "Reader",
              "Live",
              "Catalogue",
              "Time",
              "Development"
            ]
          },
          {
            "pr": 316,
            "sha": "895add5",
            "title": "Load the scene, follow dark mode, match the Paper UI (supersedes #304)",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 317,
            "sha": "0ebb370",
            "title": "Enable rls public tables",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 318,
            "sha": "7b9b8ad",
            "title": "Make phones and tablets fit: two-up cards, scroll-away header, no keyboard hints on touch",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": null,
            "sha": "8582ef2",
            "title": "Rationalised the connect, course home and course tools menus",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 330,
            "sha": "fc96e6a",
            "title": "Course shell mobile header",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 334,
            "sha": "f121102",
            "title": "Let the image backfill accept V16.2.1 and 16.2.1",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 349,
            "sha": "54a8f83",
            "title": "Generate the release changelog from merged PRs and their EARS Rules",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 351,
            "sha": "d7b88b3",
            "title": "Sign and attest the digest before tagging it",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 353,
            "sha": "17243d9",
            "title": "Error reports flushed on page unload reach app_errors",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 354,
            "sha": "a4c4c66",
            "title": "Name Netlify builds after their commit",
            "sections": [
              "Reader",
              "Live",
              "Catalogue",
              "Time",
              "Development"
            ]
          },
          {
            "pr": 355,
            "sha": "017ceb6",
            "title": "Pnpm release:candidate, release/deployed.json and the release SOP",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 331,
            "sha": "9146c41",
            "title": "Bring time, catalogue and live onto the Paper design system and the reader's UX patterns",
            "sections": [
              "Time",
              "Reader",
              "Live",
              "Catalogue",
              "Shared Packages",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 364,
            "sha": "185e87f",
            "title": "Title the sign-in page and claim the Paper rebuild's accessibility fixes",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 365,
            "sha": "5f2cdd7",
            "title": "Configure next deployment URLs at runtime",
            "sections": [
              "Infrastructure",
              "Reader",
              "Live",
              "Time",
              "Development"
            ]
          },
          {
            "pr": 368,
            "sha": "865e9c4",
            "title": "Combine open Dependabot updates (#356–#362, supersedes #294)",
            "sections": [
              "Reader",
              "Time",
              "Shared Packages",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 338,
            "sha": "4712561",
            "title": "Distinct landmark and control names in the course shell",
            "sections": [
              "Reader",
              "Catalogue",
              "Development"
            ]
          },
          {
            "pr": 266,
            "sha": "90cb998",
            "title": "Shared vite and svelte config helpers",
            "sections": [
              "Reader",
              "Live",
              "Catalogue",
              "Time",
              "Development"
            ]
          },
          {
            "pr": 373,
            "sha": "76cd877",
            "title": "Move Educator Control into the Learn section",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 386,
            "sha": "463f5ba",
            "title": "Put a notebook's outline in the sidebar, beside a lab's steps",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 389,
            "sha": "af9d0d5",
            "title": "Badge the online row in course tools, not the account avatar",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 387,
            "sha": "7f83177",
            "title": "Add Rules 0237 and 0238 for runnable notebook exercises",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 390,
            "sha": "5dc7dc9",
            "title": "Order the side menu Learn, Activity, Companions (Rule 0240)",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 391,
            "sha": "b5c272c",
            "title": "Remediate dependency advisories and reader warnings",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 393,
            "sha": "baa624b",
            "title": "Drop the backward-compat type aliases",
            "sections": [
              "Reader"
            ]
          },
          {
            "pr": 395,
            "sha": "b35eddd",
            "title": "Rewrite the stale README",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 397,
            "sha": "1fc8304",
            "title": "Keep footer at viewport bottom on short pages",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 396,
            "sha": "4993e86",
            "title": "Walk the whole shell and the cards on the page",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 412,
            "sha": "a40307a",
            "title": "Combine Dependabot bumps #402 #403 #404 #406 #407 #410",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 417,
            "sha": "951364e",
            "title": "Pin sign-in and session behaviour before leaving Auth.js (#416 phase 0)",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 418,
            "sha": "51d8c30",
            "title": "Add @tutors/tutors-types shared types package and adoption plan",
            "sections": [
              "Shared Packages",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 400,
            "sha": "3b9e456",
            "title": "Card the open learning object in the side menu (#399)",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 420,
            "sha": "7d39101",
            "title": "Give topic pages a hidden level-1 heading",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 421,
            "sha": "c1d910d",
            "title": "Hold tutors.json to a schema, EARS Rules and earlier releases (none)",
            "sections": [
              "Shared Packages",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 414,
            "sha": "ff4fe9c",
            "title": "Stop the reader paying for realtime it never reads",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 429,
            "sha": "a5d00c5",
            "title": "Reduce Supabase Realtime message volume",
            "sections": [
              "Reader",
              "Live",
              "Development"
            ]
          },
          {
            "pr": 438,
            "sha": "ee66461",
            "title": "Isolate Auth.js behind the identity boundary",
            "sections": [
              "Reader",
              "Shared Packages",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 448,
            "sha": "591c54e",
            "title": "SLOs per app, with burn-rate alerts generated from them (#170)",
            "sections": [
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 459,
            "sha": "6be2a46",
            "title": "Verify reader sessions in browser tests",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 463,
            "sha": "090712e",
            "title": "Remove Auth.js after the Kit 2 cutover",
            "sections": [
              "Reader",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 467,
            "sha": "cc67e03",
            "title": "Agree with the code (Node floor, JSR packages, specs); primitives import no community type",
            "sections": [
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 464,
            "sha": "89f9834",
            "title": "Move shared app configuration into Vite",
            "sections": [
              "Reader",
              "Live",
              "Catalogue",
              "Time",
              "Development"
            ]
          },
          {
            "pr": 465,
            "sha": "4a4f2e2",
            "title": "Use package-local lib imports",
            "sections": [
              "Time",
              "Reader",
              "Development"
            ]
          },
          {
            "pr": 466,
            "sha": "73f3cf3",
            "title": "Upgrade all four apps to SvelteKit 3",
            "sections": [
              "Reader",
              "Live",
              "Catalogue",
              "Time",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 468,
            "sha": "f0a9159",
            "title": "Restore Netlify cold starts for all four apps",
            "sections": [
              "Reader",
              "Live",
              "Catalogue",
              "Time",
              "Development"
            ]
          },
          {
            "pr": 470,
            "sha": "f87f0f9",
            "title": "Consolidate Dependabot updates and group future PRs",
            "sections": [
              "Reader",
              "Live",
              "Catalogue",
              "Time",
              "Infrastructure",
              "Development"
            ]
          },
          {
            "pr": 479,
            "sha": "cd3c339",
            "title": "Vitest 5, vitest-cucumber 8, markdown-it-deflist 4; hold TypeScript at 6",
            "sections": [
              "Shared Packages",
              "Development"
            ]
          },
          {
            "pr": 428,
            "sha": "7feefea",
            "title": "Report a page once its navigation lands",
            "sections": [
              "Reader",
              "Development"
            ]
          }
        ]
      },
      "entries": {
        "status": "not measured",
        "reason": "CHANGELOG.md at 7feefea6742f297526f75fbdfcafbb4ac6268c50 has no \"### v7feefea6742f297526f75fbdfcafbb4ac6268c50\" entries under a product section"
      }
    },
    "tests": {
      "packages": [
        {
          "package": "apps/catalogue",
          "production": 166,
          "tests": 5018,
          "ratio": 30.23,
          "below": false
        },
        {
          "package": "apps/live",
          "production": 288,
          "tests": 5826,
          "ratio": 20.23,
          "below": false
        },
        {
          "package": "apps/reader",
          "production": 2172,
          "tests": 11224,
          "ratio": 5.17,
          "below": false
        },
        {
          "package": "apps/time",
          "production": 2329,
          "tests": 5082,
          "ratio": 2.18,
          "below": false
        },
        {
          "package": "packages/jsr/create",
          "production": 10,
          "tests": 288,
          "ratio": 28.8,
          "below": false
        },
        {
          "package": "packages/jsr/gen",
          "production": 75,
          "tests": 288,
          "ratio": 3.84,
          "below": false
        },
        {
          "package": "packages/jsr/identity",
          "production": 19,
          "tests": 252,
          "ratio": 13.26,
          "below": false
        },
        {
          "package": "packages/jsr/model",
          "production": 60,
          "tests": 673,
          "ratio": 11.22,
          "below": false
        },
        {
          "package": "packages/jsr/time",
          "production": 57,
          "tests": 607,
          "ratio": 10.65,
          "below": false
        },
        {
          "package": "packages/jsr/tutors",
          "production": 4,
          "tests": 288,
          "ratio": 72,
          "below": false
        },
        {
          "package": "packages/jsr/tutors-lite",
          "production": 4,
          "tests": 288,
          "ratio": 72,
          "below": false
        },
        {
          "package": "packages/jsr/types",
          "production": 558,
          "tests": 1829,
          "ratio": 3.28,
          "below": false
        },
        {
          "package": "packages/svelte/app-config",
          "production": 175,
          "tests": 1279,
          "ratio": 7.31,
          "below": false
        },
        {
          "package": "packages/svelte/community",
          "production": 163,
          "tests": 1996,
          "ratio": 12.25,
          "below": false
        },
        {
          "package": "packages/svelte/connect",
          "production": 149,
          "tests": 1751,
          "ratio": 11.75,
          "below": false
        },
        {
          "package": "packages/svelte/course",
          "production": 202,
          "tests": 4347,
          "ratio": 21.52,
          "below": false
        },
        {
          "package": "packages/svelte/identity-sveltekit",
          "production": 528,
          "tests": 2256,
          "ratio": 4.27,
          "below": false
        },
        {
          "package": "packages/svelte/runes",
          "production": 40,
          "tests": 3550,
          "ratio": 88.75,
          "below": false
        },
        {
          "package": "packages/svelte/themes",
          "production": 620,
          "tests": 3525,
          "ratio": 5.69,
          "below": false
        },
        {
          "package": "packages/svelte/ui-components",
          "production": 2278,
          "tests": 5060,
          "ratio": 2.22,
          "below": false
        },
        {
          "package": "packages/svelte/ui-navigators",
          "production": 2579,
          "tests": 4970,
          "ratio": 1.93,
          "below": false
        },
        {
          "package": "packages/svelte/ui-primitives",
          "production": 613,
          "tests": 4154,
          "ratio": 6.78,
          "below": false
        },
        {
          "package": "packages/svelte/utils",
          "production": 2534,
          "tests": 5858,
          "ratio": 2.31,
          "below": false
        }
      ]
    },
    "reviews": {
      "status": "measured",
      "reviewed": [
        338,
        266,
        373,
        386,
        389,
        387,
        390,
        392,
        393,
        394,
        395,
        398,
        401,
        411,
        413,
        412,
        415,
        417,
        418,
        400,
        420,
        421,
        423,
        414,
        429,
        438,
        448,
        459,
        461,
        463,
        467,
        464,
        465,
        466,
        468,
        470,
        479,
        428
      ],
      "unreviewed": [
        276,
        279,
        278,
        282,
        283,
        281,
        280,
        143,
        284,
        286,
        274,
        275,
        273,
        270,
        272,
        269,
        271,
        277,
        293,
        302,
        295,
        303,
        297,
        299,
        287,
        301,
        306,
        305,
        298,
        296,
        300,
        307,
        308,
        309,
        310,
        135,
        312,
        313,
        316,
        317,
        318,
        330,
        333,
        335,
        334,
        337,
        336,
        340,
        349,
        350,
        351,
        353,
        352,
        354,
        355,
        363,
        331,
        364,
        366,
        367,
        365,
        368,
        339,
        376,
        382,
        385,
        388,
        391,
        397,
        396
      ],
      "unknown": [],
      "problems": [],
      "direct": [
        "96e9e4d",
        "8582ef2"
      ]
    },
    "dependencies": {
      "status": "measured",
      "majorBumps": [
        {
          "kind": "major",
          "name": "@sveltejs/kit",
          "importer": "apps/catalogue",
          "from": "2.70.3",
          "to": "3.0.1",
          "pr": 466
        },
        {
          "kind": "major",
          "name": "@sveltejs/kit",
          "importer": "apps/live",
          "from": "2.70.3",
          "to": "3.0.1",
          "pr": 466
        },
        {
          "kind": "major",
          "name": "@sveltejs/kit",
          "importer": "apps/reader",
          "from": "2.70.3",
          "to": "3.0.1",
          "pr": 466
        },
        {
          "kind": "major",
          "name": "@sveltejs/kit",
          "importer": "apps/time",
          "from": "2.70.3",
          "to": "3.0.1",
          "pr": 466
        },
        {
          "kind": "major",
          "name": "@sveltejs/kit",
          "importer": "packages/svelte/ui-components",
          "from": "2.70.3",
          "to": "3.0.1",
          "pr": 466
        },
        {
          "kind": "major",
          "name": "@sveltejs/package",
          "importer": "packages/svelte/ui-components",
          "from": "2.5.8",
          "to": "3.0.0",
          "pr": 412
        },
        {
          "kind": "major",
          "name": "@sveltejs/package",
          "importer": "packages/svelte/ui-navigators",
          "from": "2.5.8",
          "to": "3.0.0",
          "pr": 412
        },
        {
          "kind": "major",
          "name": "@sveltejs/package",
          "importer": "packages/svelte/ui-primitives",
          "from": "2.5.8",
          "to": "3.0.0",
          "pr": 412
        },
        {
          "kind": "major",
          "name": "@vitest/coverage-v8",
          "importer": ".",
          "from": "4.1.11",
          "to": "5.0.4",
          "pr": 479
        },
        {
          "kind": "major",
          "name": "markdown-it-deflist",
          "importer": "packages/jsr/model",
          "from": "3.0.1",
          "to": "4.0.0",
          "pr": 479
        },
        {
          "kind": "major",
          "name": "vitest",
          "importer": ".",
          "from": "4.1.11",
          "to": "5.0.4",
          "pr": 479
        }
      ],
      "newPackages": [
        {
          "kind": "new",
          "name": "@amiceli/vitest-cucumber",
          "importer": ".",
          "to": "8.0.0",
          "pr": 479
        },
        {
          "kind": "new",
          "name": "@opentelemetry/api",
          "importer": "apps/catalogue",
          "to": "1.9.1",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@opentelemetry/api",
          "importer": "apps/live",
          "to": "1.9.1",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@opentelemetry/api",
          "importer": "apps/reader",
          "to": "1.9.1",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@opentelemetry/api",
          "importer": "apps/time",
          "to": "1.9.1",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@prometheus-io/client",
          "importer": "apps/catalogue",
          "to": "0.16.1",
          "pr": 468
        },
        {
          "kind": "new",
          "name": "@prometheus-io/client",
          "importer": "apps/live",
          "to": "0.16.1",
          "pr": 468
        },
        {
          "kind": "new",
          "name": "@prometheus-io/client",
          "importer": "apps/reader",
          "to": "0.16.1",
          "pr": 468
        },
        {
          "kind": "new",
          "name": "@prometheus-io/client",
          "importer": "apps/time",
          "to": "0.16.1",
          "pr": 468
        },
        {
          "kind": "new",
          "name": "@sveltejs/adapter-auto",
          "importer": "packages/svelte/app-config",
          "to": "8.0.0",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@sveltejs/adapter-netlify",
          "importer": "apps/catalogue",
          "to": "7.0.1",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@sveltejs/adapter-netlify",
          "importer": "apps/live",
          "to": "7.0.1",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@sveltejs/adapter-netlify",
          "importer": "apps/reader",
          "to": "7.0.1",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@sveltejs/adapter-netlify",
          "importer": "apps/time",
          "to": "7.0.1",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@sveltejs/adapter-node",
          "importer": "packages/svelte/app-config",
          "to": "6.0.0",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@sveltejs/kit",
          "importer": "packages/svelte/app-config",
          "to": "3.0.1",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@sveltejs/kit",
          "importer": "packages/svelte/identity-sveltekit",
          "to": "3.0.1",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@sveltejs/kit",
          "importer": "packages/svelte/ui-primitives",
          "to": "3.0.1",
          "pr": 466
        },
        {
          "kind": "new",
          "name": "@sveltejs/vite-plugin-svelte",
          "importer": "packages/svelte/app-config",
          "to": "7.3.0",
          "pr": 266
        },
        {
          "kind": "new",
          "name": "@tailwindcss/vite",
          "importer": "packages/svelte/app-config",
          "to": "4.3.3",
          "pr": 266
        },
        {
          "kind": "new",
          "name": "ajv",
          "importer": ".",
          "to": "8.20.0",
          "pr": 421
        },
        {
          "kind": "new",
          "name": "better-auth",
          "importer": "packages/svelte/identity-sveltekit",
          "to": "1.7.7",
          "pr": 461
        },
        {
          "kind": "new",
          "name": "isomorphic-dompurify",
          "importer": "apps/catalogue",
          "to": "4.5.0",
          "pr": null
        },
        {
          "kind": "new",
          "name": "isomorphic-dompurify",
          "importer": "apps/live",
          "to": "4.5.0",
          "pr": null
        },
        {
          "kind": "new",
          "name": "isomorphic-dompurify",
          "importer": "apps/reader",
          "to": "4.5.0",
          "pr": null
        },
        {
          "kind": "new",
          "name": "isomorphic-dompurify",
          "importer": "apps/time",
          "to": "4.5.0",
          "pr": null
        },
        {
          "kind": "new",
          "name": "jheat.js",
          "importer": "packages/svelte/ui-components",
          "to": "5.2.0",
          "pr": 331
        },
        {
          "kind": "new",
          "name": "prettier",
          "importer": ".",
          "to": "3.9.9",
          "pr": 415
        },
        {
          "kind": "new",
          "name": "prettier-plugin-svelte",
          "importer": ".",
          "to": "4.1.1",
          "pr": 415
        },
        {
          "kind": "new",
          "name": "svelte",
          "importer": "packages/svelte/app-config",
          "to": "5.57.2",
          "pr": null
        },
        {
          "kind": "new",
          "name": "typescript",
          "importer": "packages/svelte/app-config",
          "to": "6.0.3",
          "pr": 266
        },
        {
          "kind": "new",
          "name": "vite",
          "importer": "packages/svelte/app-config",
          "to": "8.3.0",
          "pr": 266
        }
      ]
    }
  },
  "notMeasured": [
    {
      "signal": "orphan entries (a changelog entry with no diff)",
      "reason": "CHANGELOG.md at 7feefea6742f297526f75fbdfcafbb4ac6268c50 has no \"### v7feefea6742f297526f75fbdfcafbb4ac6268c50\" entries under a product section"
    }
  ],
  "changeRisk": {
    "score": 0,
    "prs": [
      {
        "number": 276,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/276",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 279,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/279",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 278,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/278",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 282,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/282",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 283,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/283",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 281,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/281",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 280,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/280",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 143,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/143",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 284,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/284",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 286,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/286",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 274,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/274",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 275,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/275",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 273,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/273",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 270,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/270",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 272,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/272",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 269,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/269",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 271,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/271",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 277,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/277",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 293,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/293",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 302,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/302",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 295,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/295",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 303,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/303",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 297,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/297",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 299,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/299",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 287,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/287",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 301,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/301",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 306,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/306",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 305,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/305",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 298,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/298",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 296,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/296",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 300,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/300",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 307,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/307",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 308,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/308",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 309,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/309",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 310,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/310",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 135,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/135",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 312,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/312",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 313,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/313",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": [
          "packages/svelte/ui-primitives/src/components/LoContextTreeView.svelte"
        ]
      },
      {
        "number": 316,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/316",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 317,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/317",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 318,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/318",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 330,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/330",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 333,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/333",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 335,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/335",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 334,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/334",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 337,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/337",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 336,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/336",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 340,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/340",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 349,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/349",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 350,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/350",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 351,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/351",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 353,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/353",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 352,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/352",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 354,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/354",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 355,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/355",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 363,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/363",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 331,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 364,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/364",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 366,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/366",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 367,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/367",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 365,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/365",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 368,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/368",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 338,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/338",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 339,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/339",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 266,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/266",
        "reviewed": true,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 373,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/373",
        "reviewed": true,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 376,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/376",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 382,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/382",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 385,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/385",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 386,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/386",
        "reviewed": true,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 388,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/388",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 389,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/389",
        "reviewed": true,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 387,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/387",
        "reviewed": true,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 390,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/390",
        "reviewed": true,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 391,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/391",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 392,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/392",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 393,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/393",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 394,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/394",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 395,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/395",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 397,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/397",
        "reviewed": false,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 396,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/396",
        "reviewed": false,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 398,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/398",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 401,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/401",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 411,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/411",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 413,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/413",
        "reviewed": true,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 412,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/412",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 415,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/415",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 417,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/417",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 418,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/418",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 400,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/400",
        "reviewed": true,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 420,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/420",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 421,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/421",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 423,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/423",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 414,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/414",
        "reviewed": true,
        "firstTimeContributor": false,
        "hotspots": []
      },
      {
        "number": 429,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/429",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 438,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/438",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 448,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/448",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 459,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/459",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 461,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/461",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 463,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/463",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 467,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/467",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 464,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/464",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 465,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/465",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 466,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 468,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/468",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 470,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/470",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 479,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/479",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      },
      {
        "number": 428,
        "url": "https://github.com/tutors-sdk/tutors-mono-repo/pull/428",
        "reviewed": true,
        "firstTimeContributor": true,
        "hotspots": []
      }
    ],
    "direct": [
      {
        "sha": "96e9e4d48acdf7a8a7021b97827c3378b80c21aa",
        "title": "Create images.yml"
      },
      {
        "sha": "8582ef2a6c4f45f5b16ca7cc7c1b90b6dfc1f3a8",
        "title": "Rationalised the connect, course home and course tools menus"
      }
    ],
    "deductions": [
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #276 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/276",
        "pr": 276,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "tests",
        "why": "PR #276 changed 4 production lines in apps/catalogue with 0 test lines (0.00); 4 production lines in apps/live with 0 test lines (0.00); 4 production lines in apps/reader with 0 test lines (0.00); 4 production lines in apps/time with 0 test lines (0.00): below 0.2",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/276/files#diff-f59256a303b4024e8a8528f50c846374d823ee3e46c478100acfb0cb61cc4baf",
        "file": "apps/catalogue/svelte.config.js",
        "pr": 276,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #276 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/276/files#diff-f59256a303b4024e8a8528f50c846374d823ee3e46c478100acfb0cb61cc4baf",
        "file": "apps/catalogue/svelte.config.js",
        "pr": 276,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #279 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/279",
        "pr": 279,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #279 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/279/files#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557",
        "file": "Dockerfile",
        "pr": 279,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #278 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/278",
        "pr": 278,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #282 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/282",
        "pr": 282,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #282 changed Reader, Live, Catalogue, Time, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/282/files#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557",
        "file": "Dockerfile",
        "pr": 282,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #283 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/283",
        "pr": 283,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #283 changed Reader, Live, Catalogue, Time, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/283/files#diff-681a6274b9d04d85e52f7f862f2dc5bcff947154b547367bdf9eaf0e3ab2b849",
        "file": "apps/catalogue/src/hooks.server.ts",
        "pr": 283,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #281 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/281",
        "pr": 281,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #280 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/280",
        "pr": 280,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #143 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/143",
        "pr": 143,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #143 changed Infrastructure but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/143/files#diff-a36c2b23480830b1d23bfca9ee3e98f172b1bee39d034c06780f9790dcd8c3f4",
        "file": ".github/workflows/image-build.yml",
        "pr": 143,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "commit 96e9e4d \"Create images.yml\" reached main without a pull request, so nobody reviewed it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/commit/96e9e4d48acdf7a8a7021b97827c3378b80c21aa",
        "pr": null,
        "commit": "96e9e4d48acdf7a8a7021b97827c3378b80c21aa",
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #284 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/284",
        "pr": 284,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #286 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/286",
        "pr": 286,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #274 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/274",
        "pr": 274,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #274 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/274/files#diff-5b44a0cebddcc23889fa11539c0347cbe7ca055b9a0ae01ecd54a7d1bdca08a9",
        "file": "apps/reader/src/hooks.client.ts",
        "pr": 274,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #275 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/275",
        "pr": 275,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #273 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/273",
        "pr": 273,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #273 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/273/files#diff-eca79b176cbd5fad57cf983fb03e1e0dcb6121c27f352150e40279cbfa04b27d",
        "file": "packages/svelte/utils/logger/src/logger.ts",
        "pr": 273,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #270 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/270",
        "pr": 270,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #270 changed Shared Packages, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/270/files#diff-2d45131110476140afc4c1fb134780a946b614d93104ca2fed2bfb48cbce642b",
        "file": "packages/jsr/model/src/services/search.ts",
        "pr": 270,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #272 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/272",
        "pr": 272,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #272 changed Shared Packages, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/272/files#diff-e4e6c89d6e93479833f4913d10aa9f65c29f8570db8a0af50868037b8d656ebd",
        "file": "packages/jsr/model/src/utils/lo-utils.ts",
        "pr": 272,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #269 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/269",
        "pr": 269,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "tests",
        "why": "PR #269 changed 8 production lines in apps/reader with 0 test lines (0.00); 12 production lines in packages/jsr/model with 0 test lines (0.00): below 0.2",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/269/files#diff-eb38d340e5f8cf75f24da0f7604a5cfc8c2ad77ed33e1672c354a63f9322fe2c",
        "file": "packages/jsr/model/src/utils/markdown-plugins.ts",
        "pr": 269,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #271 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/271",
        "pr": 271,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #271 changed Shared Packages, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/271/files#diff-2d45131110476140afc4c1fb134780a946b614d93104ca2fed2bfb48cbce642b",
        "file": "packages/jsr/model/src/services/search.ts",
        "pr": 271,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #277 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/277",
        "pr": 277,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #293 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/293",
        "pr": 293,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #293 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/293/files#diff-5b44a0cebddcc23889fa11539c0347cbe7ca055b9a0ae01ecd54a7d1bdca08a9",
        "file": "apps/reader/src/hooks.client.ts",
        "pr": 293,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #302 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/302",
        "pr": 302,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #302 changed Reader but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/302/files#diff-22d70ca7e354eea60e156d8536e28c645b1beef66a935ecd4e9770fa168f8364",
        "file": "packages/svelte/quiz/README.md",
        "pr": 302,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #295 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/295",
        "pr": 295,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #303 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/303",
        "pr": 303,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #303 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/303/files#diff-a36c2b23480830b1d23bfca9ee3e98f172b1bee39d034c06780f9790dcd8c3f4",
        "file": ".github/workflows/image-build.yml",
        "pr": 303,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #297 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/297",
        "pr": 297,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #297 changed Reader, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/297/files#diff-d6d421ccc99e28b6214f7df730798547515a524700fe6758ff2aaa6b7cdd8856",
        "file": "apps/reader/src/hooks.server.ts",
        "pr": 297,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #299 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/299",
        "pr": 299,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #299 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/299/files#diff-5120444e4d184841565d20ffc18b895d7d4d3f1ef63c38671080d41fa47759d9",
        "file": ".github/workflows/release-dispatch.yml",
        "pr": 299,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #287 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/287",
        "pr": 287,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #287 changed Shared Packages, Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/287/files#diff-af1518e1bffb8dbf88329d41c82afdca678d13ad8fea29dca4e6593d51972c9e",
        "file": "packages/jsr/create/src/cli.ts",
        "pr": 287,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #301 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/301",
        "pr": 301,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #306 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/306",
        "pr": 306,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #305 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/305",
        "pr": 305,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #298 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/298",
        "pr": 298,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #296 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/296",
        "pr": 296,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #296 changed Reader, Live, Catalogue, Time, Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/296/files#diff-f59256a303b4024e8a8528f50c846374d823ee3e46c478100acfb0cb61cc4baf",
        "file": "apps/catalogue/svelte.config.js",
        "pr": 296,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #300 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/300",
        "pr": 300,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #300 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/300/files#diff-ff0e2e3f4201f92768e9bdc38a009be8752ed8fd07ae8cddcd96c3cfbdea18c8",
        "file": "supabase/migrations/README.md",
        "pr": 300,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #307 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/307",
        "pr": 307,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #308 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/308",
        "pr": 308,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #309 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/309",
        "pr": 309,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #310 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/310",
        "pr": 310,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #310 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/310/files#diff-28802fbf11c83a2eee09623fb192785e7ca92a3f40602a517c011b947a1822d3",
        "file": ".github/workflows/deploy.yml",
        "pr": 310,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #135 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/135",
        "pr": 135,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #135 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/135/files#diff-c04a7d8d1a0926485b57aad087bd2ad9f6add9a5bdbb26a54faa4b504485f951",
        "file": "observability/grafana/.env.example",
        "pr": 135,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #312 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/312",
        "pr": 312,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #313 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/313",
        "pr": 313,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "hotspot",
        "why": "PR #313, a first contribution, touches hotspot packages/svelte/ui-primitives/src/components/LoContextTreeView.svelte (3 of the last 6 releases)",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/313/files#diff-3805a328d2572205ef2f52b7b2b8eb8164c3c1dc10b3c867d195122994548757",
        "file": "packages/svelte/ui-primitives/src/components/LoContextTreeView.svelte",
        "pr": 313,
        "author": "Jordan Harrison"
      },
      {
        "points": 5,
        "rule": "churn",
        "why": "reader churn 3755 lines, above 2× its median of 98 over the last 6 releases; PR #313 is the largest part (2422 lines)",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/313/files#diff-6e0d83696317a7dd434a0f962ec82a7debb04a718f3885992316f95ec9b82733",
        "file": "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "pr": 313,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #313 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/313/files#diff-da39d9014d5107a6720eb1d4637fe8dafad760cb8d03ebd5ab68c4f4ab5a2403",
        "file": "apps/catalogue/src/app.css",
        "pr": 313,
        "author": "Jordan Harrison"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #316 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/316",
        "pr": 316,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "tests",
        "why": "PR #316 changed 167 production lines in packages/svelte/ui-components with 25 test lines (0.15): below 0.2",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/316/files#diff-df9fd1dd4556d3b501ea96a8bfc85aeae703e79866841d36fa27aab651c128d6",
        "file": "packages/svelte/ui-components/src/learning-objects/content/whiteboard/WhiteboardViewer.svelte",
        "pr": 316,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #316 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/316/files#diff-093013b49b9a1084dcf8f9e57b55bc5113d33414d3e4963e21b514cbdab622e9",
        "file": "apps/reader/netlify.toml",
        "pr": 316,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #317 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/317",
        "pr": 317,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #317 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/317/files#diff-fdf1bb8831df30246efcd2e6f6f6f6706e0abf56c5d221192cd5add0ba494cd0",
        "file": "supabase/migrations/20260924_enable_rls_public_tables.sql",
        "pr": 317,
        "author": "Jordan Harrison"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #318 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/318",
        "pr": 318,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #318 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/318/files#diff-b40b17c22411e18933bba1b4e8179db964c687df979595ec583f832eab50c029",
        "file": "apps/reader/src/routes/(course-reader)/search/[courseid]/+page.svelte",
        "pr": 318,
        "author": "Jordan Harrison"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "commit 8582ef2 \"Rationalised the connect, course home and course tools menus\" reached main without a pull request, so nobody reviewed it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/commit/8582ef2a6c4f45f5b16ca7cc7c1b90b6dfc1f3a8",
        "pr": null,
        "commit": "8582ef2a6c4f45f5b16ca7cc7c1b90b6dfc1f3a8",
        "author": "Eamonn de Leastar"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "commit 8582ef2 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/commit/8582ef2a6c4f45f5b16ca7cc7c1b90b6dfc1f3a8#diff-b95d0dd8a116dc2d59c3f7ea2a20342d216e5c2f820452535f486ba9fe5265ef",
        "file": "apps/reader/tests/e2e/course-tools.spec.ts",
        "pr": null,
        "commit": "8582ef2a6c4f45f5b16ca7cc7c1b90b6dfc1f3a8",
        "author": "Eamonn de Leastar"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #330 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/330",
        "pr": 330,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "tests",
        "why": "PR #330, a first contribution, changed 100 production lines in packages/svelte/ui-navigators with 11 test lines (0.11): below 0.2",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/330/files#diff-d9959693589250e82da1747e0d059c0b1d7215ba4f64d1c3f3e9d73e3321ed90",
        "file": "packages/svelte/ui-navigators/src/MainNavigator.svelte",
        "pr": 330,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #330 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/330/files#diff-181f84addbc1846dd93430d1c01cb22c960dddc72b025e02d57739da112b5db4",
        "file": "apps/reader/tests/e2e/content-locks.spec.ts",
        "pr": 330,
        "author": "Jordan Harrison"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #333 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/333",
        "pr": 333,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #335 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/335",
        "pr": 335,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #334 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/334",
        "pr": 334,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #334 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/334/files#diff-a36c2b23480830b1d23bfca9ee3e98f172b1bee39d034c06780f9790dcd8c3f4",
        "file": ".github/workflows/image-build.yml",
        "pr": 334,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #337 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/337",
        "pr": 337,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #336 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/336",
        "pr": 336,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #340 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/340",
        "pr": 340,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #349 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/349",
        "pr": 349,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #349 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/349/files#diff-5120444e4d184841565d20ffc18b895d7d4d3f1ef63c38671080d41fa47759d9",
        "file": ".github/workflows/release-dispatch.yml",
        "pr": 349,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #350 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/350",
        "pr": 350,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #351 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/351",
        "pr": 351,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #351 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/351/files#diff-a36c2b23480830b1d23bfca9ee3e98f172b1bee39d034c06780f9790dcd8c3f4",
        "file": ".github/workflows/image-build.yml",
        "pr": 351,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #353 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/353",
        "pr": 353,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #353 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/353/files#diff-f3dde95052a1c50fbe55eb311e0bee9a099f77266952937d941eed57ffb4a1a4",
        "file": "packages/svelte/community/src/utils/error-transport.ts",
        "pr": 353,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #352 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/352",
        "pr": 352,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #354 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/354",
        "pr": 354,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #354 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/354/files#diff-f59256a303b4024e8a8528f50c846374d823ee3e46c478100acfb0cb61cc4baf",
        "file": "apps/catalogue/svelte.config.js",
        "pr": 354,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #355 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/355",
        "pr": 355,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #355 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/355/files#diff-28802fbf11c83a2eee09623fb192785e7ca92a3f40602a517c011b947a1822d3",
        "file": ".github/workflows/deploy.yml",
        "pr": 355,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #363 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/363",
        "pr": 363,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #331 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331",
        "pr": 331,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "tests",
        "why": "PR #331, a first contribution, changed 1678 production lines in apps/time with 319 test lines (0.19): below 0.2",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331/files#diff-89be349f0f1b3e21c15df9cf0ed382f7aefd1707b11ba8e0ca717547553a53fb",
        "file": "apps/time/src/lib/components/MediansView.svelte",
        "pr": 331,
        "author": "Jordan Harrison"
      },
      {
        "points": 5,
        "rule": "churn",
        "why": "catalogue churn 204 lines, above 2× its median of 3 over the last 6 releases; PR #331 is the largest part (72 lines)",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331/files#diff-5ac631d07ba17484175dc6ba0ad0d55f257e801d4b1f2a88eb7941f90275f4a6",
        "file": "apps/catalogue/src/app.html",
        "pr": 331,
        "author": "Jordan Harrison"
      },
      {
        "points": 5,
        "rule": "churn",
        "why": "live churn 306 lines, above 2× its median of 2.5 over the last 6 releases; PR #331 is the largest part (164 lines)",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331/files#diff-d4f3beaa5f469d6d50fb9ca5300f2bb3ca5041d9716f0df65022760488fc9199",
        "file": "apps/live/src/routes/[courseid]/+page.svelte",
        "pr": 331,
        "author": "Jordan Harrison"
      },
      {
        "points": 5,
        "rule": "churn",
        "why": "time churn 2175 lines, above 2× its median of 9.5 over the last 6 releases; PR #331 is the largest part (1757 lines)",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331/files#diff-89be349f0f1b3e21c15df9cf0ed382f7aefd1707b11ba8e0ca717547553a53fb",
        "file": "apps/time/src/lib/components/MediansView.svelte",
        "pr": 331,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #331 changed Time, Reader, Live, Catalogue, Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/331/files#diff-9c75df02d09573d64deea0a822ba5807d540ccad75393b98b2feeae95f98f449",
        "file": "apps/catalogue/README.md",
        "pr": 331,
        "author": "Jordan Harrison"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #364 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/364",
        "pr": 364,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #364 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/364/files#diff-ab98a30ff73d23dec66e0306f4991c4b0b812421a29d2b0e1cc7f2c4ce80c69a",
        "file": "apps/reader/src/routes/(auth)/auth/SigninWithGithub.svelte",
        "pr": 364,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #366 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/366",
        "pr": 366,
        "author": "Leigh Griffin"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #367 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/367",
        "pr": 367,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #365 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/365",
        "pr": 365,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #365 changed Infrastructure, Reader, Live, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/365/files#diff-d4f3beaa5f469d6d50fb9ca5300f2bb3ca5041d9716f0df65022760488fc9199",
        "file": "apps/live/src/routes/[courseid]/+page.svelte",
        "pr": 365,
        "author": "Jordan Harrison"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #368 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/368",
        "pr": 368,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #368 changed Reader, Time, Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/368/files#diff-a36c2b23480830b1d23bfca9ee3e98f172b1bee39d034c06780f9790dcd8c3f4",
        "file": ".github/workflows/image-build.yml",
        "pr": 368,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #338 changed Reader, Catalogue, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/338/files#diff-58991fa090f14980cbda2ed2c7d1f909e76d68d63cfffa3d690e6ef5119862ef",
        "file": "apps/catalogue/tests/e2e/shell.spec.ts",
        "pr": 338,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #339 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/339",
        "pr": 339,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #266 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/266/files#diff-9c75df02d09573d64deea0a822ba5807d540ccad75393b98b2feeae95f98f449",
        "file": "apps/catalogue/README.md",
        "pr": 266,
        "author": "Leigh Griffin"
      },
      {
        "points": 10,
        "rule": "tests",
        "why": "PR #373 changed 405 production lines in packages/svelte/ui-navigators with 20 test lines (0.05): below 0.2",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/373/files#diff-e5cd767e23ce00ac6cdda49b14e8f9243d64c624138053b6c18d1c869d9e1047",
        "file": "packages/svelte/ui-navigators/src/buttons/InfoButton.svelte",
        "pr": 373,
        "author": "Eamonn de Leastar"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #373 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/373/files#diff-181f84addbc1846dd93430d1c01cb22c960dddc72b025e02d57739da112b5db4",
        "file": "apps/reader/tests/e2e/content-locks.spec.ts",
        "pr": 373,
        "author": "Eamonn de Leastar"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #376 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/376",
        "pr": 376,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #382 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/382",
        "pr": 382,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #385 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/385",
        "pr": 385,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #386 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/386/files#diff-eb66371899236768313f2f7a3977cf3e24911c99a63196f0166e52603a1e7420",
        "file": "apps/reader/src/routes/(course-reader)/notebook/[courseid]/[...loid]/+page.ts",
        "pr": 386,
        "author": "Eamonn de Leastar"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #388 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/388",
        "pr": 388,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #389 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/389/files#diff-b95d0dd8a116dc2d59c3f7ea2a20342d216e5c2f820452535f486ba9fe5265ef",
        "file": "apps/reader/tests/e2e/course-tools.spec.ts",
        "pr": 389,
        "author": "Eamonn de Leastar"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #387 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/387/files#diff-6c733e6d08463c6cf99fa821635e7bfedd7e5bf8366c6e8910cafffdeb06bc12",
        "file": "apps/reader/tests/e2e/learning-activities.spec.ts",
        "pr": 387,
        "author": "Eamonn de Leastar"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #390 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/390/files#diff-b95d0dd8a116dc2d59c3f7ea2a20342d216e5c2f820452535f486ba9fe5265ef",
        "file": "apps/reader/tests/e2e/course-tools.spec.ts",
        "pr": 390,
        "author": "Eamonn de Leastar"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #391 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/391",
        "pr": 391,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "tests",
        "why": "PR #391, a first contribution, changed 21 production lines in apps/reader with 0 test lines (0.00): below 0.2",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/391/files#diff-a39909f15b47b4a186ddd786e107944eff1c3856b75a4696456a81247a2fde5f",
        "file": "apps/reader/src/routes/+layout.svelte",
        "pr": 391,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #391 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/391/files#diff-b40b17c22411e18933bba1b4e8179db964c687df979595ec583f832eab50c029",
        "file": "apps/reader/src/routes/(course-reader)/search/[courseid]/+page.svelte",
        "pr": 391,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "tests",
        "why": "PR #393, a first contribution, changed 20 production lines in packages/svelte/connect with 0 test lines (0.00); 3 production lines in packages/svelte/ui-navigators with 0 test lines (0.00): below 0.2",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/393/files#diff-d4710bec8228731b73dbe92d01ce27bd9f9307b9e83207792a3c513c93eac00f",
        "file": "packages/svelte/connect/src/types.ts",
        "pr": 393,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #393 changed Reader but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/393/files#diff-ab5233bd8376abf71bd2a266923a8aa4814253c9ac7b723ff77e516ddec43ffc",
        "file": "packages/svelte/connect/src/index.ts",
        "pr": 393,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #395 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/395/files#diff-d5200a5aa732e1caa4ad64bf27219a0e12d0c7bfe62774cb4be8285158de8e69",
        "file": "apps/reader/README.md",
        "pr": 395,
        "author": "Claude"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #397 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/397",
        "pr": 397,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #397 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/397/files#diff-6e0d83696317a7dd434a0f962ec82a7debb04a718f3885992316f95ec9b82733",
        "file": "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "pr": 397,
        "author": "Jordan Harrison"
      },
      {
        "points": 0,
        "rule": "review",
        "floor": true,
        "why": "PR #396 was merged with no approving review",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/396",
        "pr": 396,
        "author": "Eamonn de Leastar"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #396 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/396/files#diff-3b5918b61402a5d8e4434c57f5209512329c5854280634c7aee3ae773f5886a1",
        "file": "apps/reader/src/routes/(home)/+page.svelte",
        "pr": 396,
        "author": "Eamonn de Leastar"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #412 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/412/files#diff-d8d4a3228ed544cf67334429cc40ce190756f0943bfa969d6b7368ceab233baa",
        "file": "packages/svelte/course/package.json",
        "pr": 412,
        "author": "Claude"
      },
      {
        "points": 5,
        "rule": "dependency",
        "why": "PR #412 moves @sveltejs/package 2.5.8 → 3.0.0 in packages/svelte/ui-components: a major bump, ground the journeys may not cover",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/412/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
        "file": "pnpm-lock.yaml",
        "pr": 412,
        "author": "Claude"
      },
      {
        "points": 5,
        "rule": "dependency",
        "why": "PR #412 moves @sveltejs/package 2.5.8 → 3.0.0 in packages/svelte/ui-navigators: a major bump, ground the journeys may not cover",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/412/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
        "file": "pnpm-lock.yaml",
        "pr": 412,
        "author": "Claude"
      },
      {
        "points": 5,
        "rule": "dependency",
        "why": "PR #412 moves @sveltejs/package 2.5.8 → 3.0.0 in packages/svelte/ui-primitives: a major bump, ground the journeys may not cover",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/412/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
        "file": "pnpm-lock.yaml",
        "pr": 412,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #417 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/417/files#diff-d6d421ccc99e28b6214f7df730798547515a524700fe6758ff2aaa6b7cdd8856",
        "file": "apps/reader/src/hooks.server.ts",
        "pr": 417,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #418 changed Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/418/files#diff-9bf0b9b665dc6e3c59d7f36edff3071095d5a6714d8916aea98f33db1f4e6985",
        "file": "etc/tutors-model-lib.api.md",
        "pr": 418,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #400 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/400/files#diff-6e0d83696317a7dd434a0f962ec82a7debb04a718f3885992316f95ec9b82733",
        "file": "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "pr": 400,
        "author": "Eamonn de Leastar"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #420 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/420/files#diff-6e0d83696317a7dd434a0f962ec82a7debb04a718f3885992316f95ec9b82733",
        "file": "apps/reader/tests/e2e/shell-and-navigation.spec.ts",
        "pr": 420,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #421 changed Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/421/files#diff-76dfd20a707b53fb10326e7db01cf138b29acba1732e4a6bdb1f49765dd262a6",
        "file": "etc/tutors-types.api.md",
        "pr": 421,
        "author": "Claude"
      },
      {
        "points": 5,
        "rule": "ownership",
        "why": "packages/svelte/connect/src/services/connect.svelte.ts had 4 authors this release (PR #297, PR #393, PR #414, PR #429, PR #438, PR #466, PR #428): no one holds the whole picture",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/414/files#diff-fd4035ac7c862123cdae65175cc120073c7245aa50e8aab37b76da2aaefd542b",
        "file": "packages/svelte/connect/src/services/connect.svelte.ts",
        "pr": 414,
        "author": "Eamonn de Leastar"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #414 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/414/files#diff-7510afa4360db59ba2dbf1eac45bcffc9ccd9c47da1077089ee4ce5dcddc98d9",
        "file": "apps/reader/src/routes/(course-reader)/+layout.svelte",
        "pr": 414,
        "author": "Eamonn de Leastar"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #429 changed Reader, Live, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/429/files#diff-74bbf420b89833fb8ca4a118f46141d27df4c2789134a3e8a730f28cf330bfc4",
        "file": "apps/live/src/routes/+page.svelte",
        "pr": 429,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #438 changed Reader, Shared Packages, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/438/files#diff-d5200a5aa732e1caa4ad64bf27219a0e12d0c7bfe62774cb4be8285158de8e69",
        "file": "apps/reader/README.md",
        "pr": 438,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #448 changed Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/448/files#diff-e45c160249aaa8f8fadc903bc291fe52ed2aa247a3f3eb0595ebd1436418e7fa",
        "file": "deploy/k8s/components/servicemonitor/servicemonitor.yaml",
        "pr": 448,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #459 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/459/files#diff-d5200a5aa732e1caa4ad64bf27219a0e12d0c7bfe62774cb4be8285158de8e69",
        "file": "apps/reader/README.md",
        "pr": 459,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #463 changed Reader, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/463/files#diff-d5200a5aa732e1caa4ad64bf27219a0e12d0c7bfe62774cb4be8285158de8e69",
        "file": "apps/reader/README.md",
        "pr": 463,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #467 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/467/files#diff-4cdae9cd9a7c01094b583cd12b4eedbd4e72fdb3b6b78043db3b83e5f0941853",
        "file": "packages/svelte/ui-primitives/package.json",
        "pr": 467,
        "author": "Claude"
      },
      {
        "points": 5,
        "rule": "ownership",
        "why": "apps/catalogue/svelte.config.js had 3 authors this release (PR #276, PR #282, PR #296, PR #354, PR #266, PR #464): no one holds the whole picture",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/464/files#diff-f59256a303b4024e8a8528f50c846374d823ee3e46c478100acfb0cb61cc4baf",
        "file": "apps/catalogue/svelte.config.js",
        "pr": 464,
        "author": "Jordan Harrison"
      },
      {
        "points": 5,
        "rule": "ownership",
        "why": "apps/live/svelte.config.js had 3 authors this release (PR #276, PR #282, PR #296, PR #354, PR #266, PR #464): no one holds the whole picture (and 16 more files like it, not counted again)",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/464/files#diff-895ca8af765a9765d1c30b45819e2ea87f5edc966e34f12c301ce40ae1fb1c9a",
        "file": "apps/live/svelte.config.js",
        "pr": 464,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #464 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/464/files#diff-9c75df02d09573d64deea0a822ba5807d540ccad75393b98b2feeae95f98f449",
        "file": "apps/catalogue/README.md",
        "pr": 464,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #465 changed Time, Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/465/files#diff-d5200a5aa732e1caa4ad64bf27219a0e12d0c7bfe62774cb4be8285158de8e69",
        "file": "apps/reader/README.md",
        "pr": 465,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #466 changed Reader, Live, Catalogue, Time, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-28802fbf11c83a2eee09623fb192785e7ca92a3f40602a517c011b947a1822d3",
        "file": ".github/workflows/deploy.yml",
        "pr": 466,
        "author": "Jordan Harrison"
      },
      {
        "points": 5,
        "rule": "dependency",
        "why": "PR #466 moves @sveltejs/kit 2.70.3 → 3.0.1 in apps/catalogue: a major bump, ground the journeys may not cover",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
        "file": "pnpm-lock.yaml",
        "pr": 466,
        "author": "Jordan Harrison"
      },
      {
        "points": 5,
        "rule": "dependency",
        "why": "PR #466 moves @sveltejs/kit 2.70.3 → 3.0.1 in apps/live: a major bump, ground the journeys may not cover",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
        "file": "pnpm-lock.yaml",
        "pr": 466,
        "author": "Jordan Harrison"
      },
      {
        "points": 5,
        "rule": "dependency",
        "why": "PR #466 moves @sveltejs/kit 2.70.3 → 3.0.1 in apps/reader: a major bump, ground the journeys may not cover",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
        "file": "pnpm-lock.yaml",
        "pr": 466,
        "author": "Jordan Harrison"
      },
      {
        "points": 5,
        "rule": "dependency",
        "why": "PR #466 moves @sveltejs/kit 2.70.3 → 3.0.1 in apps/time: a major bump, ground the journeys may not cover",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
        "file": "pnpm-lock.yaml",
        "pr": 466,
        "author": "Jordan Harrison"
      },
      {
        "points": 5,
        "rule": "dependency",
        "why": "PR #466 moves @sveltejs/kit 2.70.3 → 3.0.1 in packages/svelte/ui-components: a major bump, ground the journeys may not cover",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/466/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
        "file": "pnpm-lock.yaml",
        "pr": 466,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "tests",
        "why": "PR #468, a first contribution, changed 3 production lines in packages/svelte/app-config with 0 test lines (0.00): below 0.2",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/468/files#diff-41da68a108033403e04d24e3c4edc20148d7e66cac0f88b18918fc3847f9453e",
        "file": "packages/svelte/app-config/src/vite.js",
        "pr": 468,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #468 changed Reader, Live, Catalogue, Time, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/468/files#diff-c19c016987c6b7d3f8a014d7e4df17402c3557f0741538318a2b573727ddfff4",
        "file": "apps/catalogue/package.json",
        "pr": 468,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #470 changed Reader, Live, Catalogue, Time, Infrastructure, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/470/files#diff-28802fbf11c83a2eee09623fb192785e7ca92a3f40602a517c011b947a1822d3",
        "file": ".github/workflows/deploy.yml",
        "pr": 470,
        "author": "Jordan Harrison"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #479 changed Shared Packages, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/479/files#diff-3a175be77e72cbc9c0ea09d9777050932ba65ef8038cda1bea5fd6181afbe68e",
        "file": "packages/jsr/model/deno.json",
        "pr": 479,
        "author": "Claude"
      },
      {
        "points": 5,
        "rule": "dependency",
        "why": "PR #479 moves @vitest/coverage-v8 4.1.11 → 5.0.4 in the root: a major bump, ground the journeys may not cover",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/479/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
        "file": "pnpm-lock.yaml",
        "pr": 479,
        "author": "Claude"
      },
      {
        "points": 5,
        "rule": "dependency",
        "why": "PR #479 moves markdown-it-deflist 3.0.1 → 4.0.0 in packages/jsr/model: a major bump, ground the journeys may not cover",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/479/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
        "file": "pnpm-lock.yaml",
        "pr": 479,
        "author": "Claude"
      },
      {
        "points": 5,
        "rule": "dependency",
        "why": "PR #479 moves vitest 4.1.11 → 5.0.4 in the root: a major bump, ground the journeys may not cover",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/479/files#diff-32824c984905bb02bc7ffcef96a77addd1f1602cff71a11fbbfdd7f53ee026bb",
        "file": "pnpm-lock.yaml",
        "pr": 479,
        "author": "Claude"
      },
      {
        "points": 10,
        "rule": "orphan",
        "why": "PR #428 changed Reader, Development but no changelog entry under v7feefea6742f297526f75fbdfcafbb4ac6268c50 names it",
        "evidence": "https://github.com/tutors-sdk/tutors-mono-repo/pull/428/files#diff-7510afa4360db59ba2dbf1eac45bcffc9ccd9c47da1077089ee4ce5dcddc98d9",
        "file": "apps/reader/src/routes/(course-reader)/+layout.svelte",
        "pr": 428,
        "author": "Claude"
      }
    ],
    "gaps": [
      "orphan entries (a changelog entry with no diff): CHANGELOG.md at 7feefea6742f297526f75fbdfcafbb4ac6268c50 has no \"### v7feefea6742f297526f75fbdfcafbb4ac6268c50\" entries under a product section"
    ],
    "orphans": 68,
    "evidence": "changes.json"
  },
  "harness": {
    "version": "1.36.1",
    "contractVersion": "1.36.0"
  }
}
