{
  "base": "fed002459386462bb43f57779f44bfbd77ade67e",
  "environment": {
    "python": "3.12.14",
    "implementation": "CPython",
    "platform": "Linux-6.18.44-x86_64-with-glibc2.41",
    "six": "1.17.0",
    "pytest": "9.1.1",
    "setuptools": "84.0.0",
    "wheel": "0.48.0",
    "packaging_build_tool": "26.3"
  },
  "tutorial_coverage": {
    "subject_guides": 9,
    "python_blocks": 13,
    "per_page": {
      "docs/tutorials/bezier.md": 1,
      "docs/tutorials/camera.md": 1,
      "docs/tutorials/geometry.md": 2,
      "docs/tutorials/interop.md": 1,
      "docs/tutorials/lighting.md": 2,
      "docs/tutorials/numerical.md": 2,
      "docs/tutorials/quaternions.md": 2,
      "docs/tutorials/transformations.md": 1,
      "docs/tutorials/vectors.md": 1
    },
    "long_companion_scripts": "None needed: every new example is self-contained inline Python; existing HDR scripts are reused unchanged.",
    "local_calculations": [
      "Speed-limited target update",
      "Bezier derivative",
      "Exact-zero local ray-plane query",
      "Finite scalar tolerance helper"
    ],
    "limitations": "Worked examples cover stated finite domains, not exhaustive input validation or new public APIs."
  },
  "pytest": {
    "passed": 2249,
    "failed": 0,
    "xfail": 0,
    "skipped": 0,
    "seconds": 11.78
  },
  "source_check": {
    "base": "dc418923c692b609a9fc611c66433e5950e0a321",
    "pages": [
      "ROADMAP.md",
      "docs/README.md",
      "docs/development/roadmap.md",
      "docs/development/verification.md",
      "docs/architecture/philosophy.md",
      "docs/architecture/conventions.md",
      "docs/architecture/compatibility.md",
      "docs/architecture/api-inventory.md",
      "README.md",
      "docs/getting-started/README.md",
      "docs/getting-started/installation.md",
      "docs/getting-started/quick-start.md",
      "docs/getting-started/verification.md",
      "docs/api/bezier.md",
      "docs/api/common.md",
      "docs/api/coverage.md",
      "docs/api/decisions.md",
      "docs/api/index.md",
      "docs/api/legacy.md",
      "docs/api/legendre.md",
      "docs/api/matrix.md",
      "docs/api/plane.md",
      "docs/api/projection.md",
      "docs/api/quaternion.md",
      "docs/api/ray.md",
      "docs/api/spherical-harmonics.md",
      "docs/api/transformations.md",
      "docs/api/vector.md",
      "docs/tutorials/bezier.md",
      "docs/tutorials/camera.md",
      "docs/tutorials/decisions.md",
      "docs/tutorials/geometry.md",
      "docs/tutorials/index.md",
      "docs/tutorials/interop.md",
      "docs/tutorials/lighting.md",
      "docs/tutorials/numerical.md",
      "docs/tutorials/quaternions.md",
      "docs/tutorials/transformations.md",
      "docs/tutorials/vectors.md",
      "docs/tutorials/verification.md"
    ],
    "links_checked": 418,
    "source_declarations_checked": 268,
    "examples_executed": 42,
    "examples_by_page": {
      "docs/architecture/conventions.md": 4,
      "README.md": 2,
      "docs/getting-started/quick-start.md": 7,
      "docs/api/bezier.md": 1,
      "docs/api/common.md": 1,
      "docs/api/legacy.md": 1,
      "docs/api/legendre.md": 1,
      "docs/api/matrix.md": 1,
      "docs/api/plane.md": 1,
      "docs/api/projection.md": 1,
      "docs/api/quaternion.md": 2,
      "docs/api/ray.md": 1,
      "docs/api/spherical-harmonics.md": 3,
      "docs/api/transformations.md": 1,
      "docs/api/vector.md": 2,
      "docs/tutorials/bezier.md": 1,
      "docs/tutorials/camera.md": 1,
      "docs/tutorials/geometry.md": 2,
      "docs/tutorials/interop.md": 1,
      "docs/tutorials/lighting.md": 2,
      "docs/tutorials/numerical.md": 2,
      "docs/tutorials/quaternions.md": 2,
      "docs/tutorials/transformations.md": 1,
      "docs/tutorials/vectors.md": 1
    },
    "api_reference": {
      "declarations": 268,
      "constants": 7,
      "runtime_signatures_checked": true,
      "omitted_declarations": []
    },
    "protected_files_unchanged": 93,
    "protected_sha256": "701db31c85d278d7d547adca3312ee58f2296dc892a6a9aee10500187ecc5196"
  },
  "installed_wheel_check": {
    "base": "dc418923c692b609a9fc611c66433e5950e0a321",
    "pages": [
      "ROADMAP.md",
      "docs/README.md",
      "docs/development/roadmap.md",
      "docs/development/verification.md",
      "docs/architecture/philosophy.md",
      "docs/architecture/conventions.md",
      "docs/architecture/compatibility.md",
      "docs/architecture/api-inventory.md",
      "README.md",
      "docs/getting-started/README.md",
      "docs/getting-started/installation.md",
      "docs/getting-started/quick-start.md",
      "docs/getting-started/verification.md",
      "docs/api/bezier.md",
      "docs/api/common.md",
      "docs/api/coverage.md",
      "docs/api/decisions.md",
      "docs/api/index.md",
      "docs/api/legacy.md",
      "docs/api/legendre.md",
      "docs/api/matrix.md",
      "docs/api/plane.md",
      "docs/api/projection.md",
      "docs/api/quaternion.md",
      "docs/api/ray.md",
      "docs/api/spherical-harmonics.md",
      "docs/api/transformations.md",
      "docs/api/vector.md",
      "docs/tutorials/bezier.md",
      "docs/tutorials/camera.md",
      "docs/tutorials/decisions.md",
      "docs/tutorials/geometry.md",
      "docs/tutorials/index.md",
      "docs/tutorials/interop.md",
      "docs/tutorials/lighting.md",
      "docs/tutorials/numerical.md",
      "docs/tutorials/quaternions.md",
      "docs/tutorials/transformations.md",
      "docs/tutorials/vectors.md",
      "docs/tutorials/verification.md"
    ],
    "links_checked": 418,
    "source_declarations_checked": 268,
    "examples_executed": 42,
    "examples_by_page": {
      "docs/architecture/conventions.md": 4,
      "README.md": 2,
      "docs/getting-started/quick-start.md": 7,
      "docs/api/bezier.md": 1,
      "docs/api/common.md": 1,
      "docs/api/legacy.md": 1,
      "docs/api/legendre.md": 1,
      "docs/api/matrix.md": 1,
      "docs/api/plane.md": 1,
      "docs/api/projection.md": 1,
      "docs/api/quaternion.md": 2,
      "docs/api/ray.md": 1,
      "docs/api/spherical-harmonics.md": 3,
      "docs/api/transformations.md": 1,
      "docs/api/vector.md": 2,
      "docs/tutorials/bezier.md": 1,
      "docs/tutorials/camera.md": 1,
      "docs/tutorials/geometry.md": 2,
      "docs/tutorials/interop.md": 1,
      "docs/tutorials/lighting.md": 2,
      "docs/tutorials/numerical.md": 2,
      "docs/tutorials/quaternions.md": 2,
      "docs/tutorials/transformations.md": 1,
      "docs/tutorials/vectors.md": 1
    },
    "example_package": "/tmp/phase4d-wheel-env/lib/python3.12/site-packages/gem/__init__.py",
    "api_reference": {
      "declarations": 268,
      "constants": 7,
      "runtime_signatures_checked": true,
      "omitted_declarations": []
    },
    "protected_files_unchanged": 93,
    "protected_sha256": "701db31c85d278d7d547adca3312ee58f2296dc892a6a9aee10500187ecc5196"
  },
  "installed_sdist_check": {
    "base": "dc418923c692b609a9fc611c66433e5950e0a321",
    "pages": [
      "ROADMAP.md",
      "docs/README.md",
      "docs/development/roadmap.md",
      "docs/development/verification.md",
      "docs/architecture/philosophy.md",
      "docs/architecture/conventions.md",
      "docs/architecture/compatibility.md",
      "docs/architecture/api-inventory.md",
      "README.md",
      "docs/getting-started/README.md",
      "docs/getting-started/installation.md",
      "docs/getting-started/quick-start.md",
      "docs/getting-started/verification.md",
      "docs/api/bezier.md",
      "docs/api/common.md",
      "docs/api/coverage.md",
      "docs/api/decisions.md",
      "docs/api/index.md",
      "docs/api/legacy.md",
      "docs/api/legendre.md",
      "docs/api/matrix.md",
      "docs/api/plane.md",
      "docs/api/projection.md",
      "docs/api/quaternion.md",
      "docs/api/ray.md",
      "docs/api/spherical-harmonics.md",
      "docs/api/transformations.md",
      "docs/api/vector.md",
      "docs/tutorials/bezier.md",
      "docs/tutorials/camera.md",
      "docs/tutorials/decisions.md",
      "docs/tutorials/geometry.md",
      "docs/tutorials/index.md",
      "docs/tutorials/interop.md",
      "docs/tutorials/lighting.md",
      "docs/tutorials/numerical.md",
      "docs/tutorials/quaternions.md",
      "docs/tutorials/transformations.md",
      "docs/tutorials/vectors.md",
      "docs/tutorials/verification.md"
    ],
    "links_checked": 418,
    "source_declarations_checked": 268,
    "examples_executed": 42,
    "examples_by_page": {
      "docs/architecture/conventions.md": 4,
      "README.md": 2,
      "docs/getting-started/quick-start.md": 7,
      "docs/api/bezier.md": 1,
      "docs/api/common.md": 1,
      "docs/api/legacy.md": 1,
      "docs/api/legendre.md": 1,
      "docs/api/matrix.md": 1,
      "docs/api/plane.md": 1,
      "docs/api/projection.md": 1,
      "docs/api/quaternion.md": 2,
      "docs/api/ray.md": 1,
      "docs/api/spherical-harmonics.md": 3,
      "docs/api/transformations.md": 1,
      "docs/api/vector.md": 2,
      "docs/tutorials/bezier.md": 1,
      "docs/tutorials/camera.md": 1,
      "docs/tutorials/geometry.md": 2,
      "docs/tutorials/interop.md": 1,
      "docs/tutorials/lighting.md": 2,
      "docs/tutorials/numerical.md": 2,
      "docs/tutorials/quaternions.md": 2,
      "docs/tutorials/transformations.md": 1,
      "docs/tutorials/vectors.md": 1
    },
    "example_package": "/tmp/phase4d-sdist-env/lib/python3.12/site-packages/gem/__init__.py",
    "api_reference": {
      "declarations": 268,
      "constants": 7,
      "runtime_signatures_checked": true,
      "omitted_declarations": []
    },
    "protected_files_unchanged": 93,
    "protected_sha256": "701db31c85d278d7d547adca3312ee58f2296dc892a6a9aee10500187ecc5196"
  },
  "previous_phase_check": {
    "base": "dc418923c692b609a9fc611c66433e5950e0a321",
    "pages": [
      "ROADMAP.md",
      "docs/README.md",
      "docs/development/roadmap.md",
      "docs/development/verification.md",
      "docs/architecture/philosophy.md",
      "docs/architecture/conventions.md",
      "docs/architecture/compatibility.md",
      "docs/architecture/api-inventory.md",
      "README.md",
      "docs/getting-started/README.md",
      "docs/getting-started/installation.md",
      "docs/getting-started/quick-start.md",
      "docs/getting-started/verification.md",
      "docs/api/bezier.md",
      "docs/api/common.md",
      "docs/api/coverage.md",
      "docs/api/decisions.md",
      "docs/api/index.md",
      "docs/api/legacy.md",
      "docs/api/legendre.md",
      "docs/api/matrix.md",
      "docs/api/plane.md",
      "docs/api/projection.md",
      "docs/api/quaternion.md",
      "docs/api/ray.md",
      "docs/api/spherical-harmonics.md",
      "docs/api/transformations.md",
      "docs/api/vector.md"
    ],
    "links_checked": 315,
    "source_declarations_checked": 268,
    "examples_executed": 29,
    "examples_by_page": {
      "docs/architecture/conventions.md": 4,
      "README.md": 2,
      "docs/getting-started/quick-start.md": 7,
      "docs/api/bezier.md": 1,
      "docs/api/common.md": 1,
      "docs/api/legacy.md": 1,
      "docs/api/legendre.md": 1,
      "docs/api/matrix.md": 1,
      "docs/api/plane.md": 1,
      "docs/api/projection.md": 1,
      "docs/api/quaternion.md": 2,
      "docs/api/ray.md": 1,
      "docs/api/spherical-harmonics.md": 3,
      "docs/api/transformations.md": 1,
      "docs/api/vector.md": 2
    },
    "api_reference": {
      "declarations": 268,
      "constants": 7,
      "runtime_signatures_checked": true,
      "omitted_declarations": []
    },
    "protected_files_unchanged": 93,
    "protected_sha256": "701db31c85d278d7d547adca3312ee58f2296dc892a6a9aee10500187ecc5196"
  },
  "build": {
    "wheel": "gem-0.1.12-py3-none-any.whl",
    "sdist": "gem-0.1.12.tar.gz",
    "directory": "/tmp/phase4d-source/dist",
    "source": "Clean local clone of merged master with tutorial Markdown, navigation and checker updates copied in before building; protected runtime and packaging remain identical. New tutorial pages are not promised to be included by unchanged manifests."
  },
  "commands": [
    "git clone --no-hardlinks /workspace/pyGameMath /tmp/phase4d-source",
    "python3.12 -m venv /tmp/phase4d-wheel-env",
    "python -m pip download --index-url https://pypi.org/simple --only-binary=:all: --no-deps --dest /tmp/phase4d-dependencies six==1.17.0 setuptools==84.0.0 wheel==0.48.0 packaging==26.3",
    "/tmp/phase4d-wheel-env/bin/python -m pip install --no-index --find-links /tmp/phase4d-dependencies six setuptools wheel packaging",
    "/tmp/phase4d-wheel-env/bin/python setup.py sdist bdist_wheel",
    "/tmp/phase4d-wheel-env/bin/python -m pip install --no-index dist/gem-0.1.12-py3-none-any.whl",
    "/tmp/phase4d-wheel-env/bin/python -I /tmp/phase4d-source/tools/check_architecture_docs.py --examples --getting-started --api-reference --tutorials --package-root /tmp/phase4d-wheel-env/lib/python3.12/site-packages --output /tmp/phase4d-wheel-check.json",
    "python3.12 -m venv /tmp/phase4d-sdist-env",
    "PIP_NO_INDEX=1 PIP_FIND_LINKS=/tmp/phase4d-dependencies /tmp/phase4d-sdist-env/bin/python -m pip install /tmp/phase4d-sdist/gem-0.1.12",
    "/tmp/phase4d-sdist-env/bin/python -I /tmp/phase4d-source/tools/check_architecture_docs.py --examples --getting-started --api-reference --tutorials --package-root /tmp/phase4d-sdist-env/lib/python3.12/site-packages --output /tmp/phase4d-sdist-check.json",
    "/workspace/.venvs/pyGameMath/bin/python -m pytest -q",
    "/workspace/.venvs/pyGameMath/bin/python tools/check_architecture_docs.py --examples --getting-started --api-reference --tutorials --output /tmp/phase4d-source-check.json",
    "/workspace/.venvs/pyGameMath/bin/python tools/check_architecture_docs.py --examples --getting-started --api-reference",
    "/workspace/.venvs/pyGameMath/bin/python tools/check_architecture_docs.py --examples",
    "/tmp/phase4d-wheel-env/bin/python -m examples.hdr_sh.regenerate --output-dir /tmp/gem-tutorial-hdr"
  ],
  "working_directories": "Build, wheel install and documented HDR command ran in /tmp/phase4d-source. Isolated installed checks ran from /tmp; regression/source checks in /workspace/pyGameMath. Sdist extracted using standard-library tarfile with the data filter. Dependency download occurred before offline builds.",
  "installed_hdr_entrypoint": "Executed with /tmp/phase4d-wheel-env/bin/python -I from /tmp; add only /tmp/phase4d-source/examples to sys.path, assert gem imports inside installed site-packages, then call hdr_sh.regenerate.main with --output-dir /tmp/gem-tutorial-hdr-installed.",
  "hdr_images": {
    "sh_original.png": {
      "sha256": "dfc2e0f5aa7cdee17dc32231ae3258c551cc886eff2bbb01cc43f2e38360174a",
      "matches_committed_reference": true,
      "installed_generation_matches": true,
      "dimensions": [
        192,
        192
      ],
      "linear_luminance_centroid_pixels": [
        122.88612829496532,
        95.49999999999999
      ],
      "minimum_byte": 0,
      "maximum_byte": 211
    },
    "sh_rotated.png": {
      "sha256": "c9b205dc7dee31d731685d996326badf9da62c48fe69713b6fbe2fea4fccaac7",
      "matches_committed_reference": true,
      "installed_generation_matches": true,
      "dimensions": [
        192,
        192
      ],
      "linear_luminance_centroid_pixels": [
        95.49999999999999,
        68.11387170503467
      ],
      "minimum_byte": 0,
      "maximum_byte": 211
    }
  },
  "hdr_numerical_evidence": "Full-suite tests/test_hdr_sh_example.py includes independent basis/shader and pre-tone-map pixel references, L0/L1 controls, RGB isolation, rotation and ownership checks. Manifest centroid properties below confirm visible rotation; hashes alone are not a cross-platform correctness oracle.",
  "limitations": [
    "Only CPython 3.12/Linux executed; no Python 2.7 or wider support claim.",
    "Foreign GPU/binding behavior was not executed.",
    "Byte-identical PNG regeneration is same-environment evidence; libm/zlib/platform changes may affect bytes.",
    "No new ray-hit, near-parallel, constant-speed or general invalid-input contract chosen."
  ]
}
