audit: seal accuracy phase 1 evidence

This commit is contained in:
Jens
2026-08-01 19:02:24 +02:00
parent 3d442ef43f
commit cebeb5f3b4
29 changed files with 11269 additions and 10990 deletions
+3 -2
View File
@@ -12,5 +12,6 @@ Dockerfile text eol=lf
*.css text eol=lf
*.json text eol=lf
# Retained audit exports preserve source bytes, including tool-emitted whitespace.
artifacts/evidence/accuracy/** -whitespace
# Retained audit exports preserve source bytes, including line endings and
# tool-emitted whitespace.
artifacts/evidence/accuracy/** -text -whitespace
@@ -1,5 +1,5 @@
command=python -m alembic heads
exit_code=0
captured_at=2026-08-01T18:37:24.0020021+02:00
202607260001 (head)
command=python -m alembic heads
exit_code=0
captured_at=2026-08-01T18:37:24.0020021+02:00
202607260001 (head)
File diff suppressed because it is too large Load Diff
@@ -1,28 +1,28 @@
workdir=backend
command=python -m pytest -W error::DeprecationWarning
exit_code=2
captured_at=2026-08-01T18:33:34.1591431+02:00
============================= test session starts =============================
platform win32 -- Python 3.13.2, pytest-8.4.0, pluggy-1.6.0
rootdir: C:\Projects\geointel\backend
configfile: pyproject.toml
plugins: asyncio-1.0.0, cov-6.3.0, anyio-4.12.1
asyncio: mode=Mode.STRICT, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 1194 items / 1 error
=================================== ERRORS ====================================
__________ ERROR collecting tests/test_operator_polygon_label_qa.py ___________
ImportError while importing test module 'C:\Projects\geointel\backend\tests\test_operator_polygon_label_qa.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
C:\Program Files\Python313\Lib\importlib\__init__.py:88: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests\test_operator_polygon_label_qa.py:1: in <module>
from scripts.render_operator_polygon_label_qa import geometry_rings
E ModuleNotFoundError: No module named 'scripts.render_operator_polygon_label_qa'
=========================== short test summary info ===========================
ERROR tests/test_operator_polygon_label_qa.py
!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
============================== 1 error in 5.69s ===============================
workdir=backend
command=python -m pytest -W error::DeprecationWarning
exit_code=2
captured_at=2026-08-01T18:33:34.1591431+02:00
============================= test session starts =============================
platform win32 -- Python 3.13.2, pytest-8.4.0, pluggy-1.6.0
rootdir: C:\Projects\geointel\backend
configfile: pyproject.toml
plugins: asyncio-1.0.0, cov-6.3.0, anyio-4.12.1
asyncio: mode=Mode.STRICT, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 1194 items / 1 error
=================================== ERRORS ====================================
__________ ERROR collecting tests/test_operator_polygon_label_qa.py ___________
ImportError while importing test module 'C:\Projects\geointel\backend\tests\test_operator_polygon_label_qa.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
C:\Program Files\Python313\Lib\importlib\__init__.py:88: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests\test_operator_polygon_label_qa.py:1: in <module>
from scripts.render_operator_polygon_label_qa import geometry_rings
E ModuleNotFoundError: No module named 'scripts.render_operator_polygon_label_qa'
=========================== short test summary info ===========================
ERROR tests/test_operator_polygon_label_qa.py
!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
============================== 1 error in 5.69s ===============================
File diff suppressed because one or more lines are too long
@@ -1,325 +1,325 @@
command=python -m pytest backend/tests -q -p no:cacheprovider -W error::DeprecationWarning --junitxml=artifacts/evidence/accuracy/P1/backend-full-suite.junit.xml
exit_code=1
captured_at=2026-08-01T18:32:02.4460806+02:00
........................................................................ [ 6%]
........................................................................ [ 12%]
.........................................F..........F..................F [ 18%]
..................F..................................................... [ 24%]
.........F.............................................................. [ 30%]
........................................................................ [ 36%]
.....F.F.......................................FF....................... [ 42%]
........................................................................ [ 48%]
..F..................................................................... [ 54%]
........................................................................ [ 60%]
.......F................................................................ [ 66%]
........................................................................ [ 72%]
........................................FFFF...........F................ [ 78%]
...............................................F........................ [ 84%]
........................................................................ [ 90%]
........................................................................ [ 96%]
............................................. [100%]
================================== FAILURES ===================================
_ test_frontend_prefers_materialized_national_workspace_and_resolves_drawn_bbox _
def test_frontend_prefers_materialized_national_workspace_and_resolves_drawn_bbox() -> None:
root = Path(__file__).parents[2]
focus = (root / "frontend" / "src" / "config" / "primaryFocus.ts").read_text(encoding="utf-8")
workspace_hook = (root / "frontend" / "src" / "hooks" / "useProjectWorkspace.ts").read_text(encoding="utf-8")
coverage_hook = (root / "frontend" / "src" / "hooks" / "useCoverageResolver.ts").read_text(encoding="utf-8")
map_workspace = (root / "frontend" / "src" / "components" / "map" / "MapWorkspace.tsx").read_text(encoding="utf-8")
assert "Belgium and North Sea Workbench" in focus
assert "nationalProject" in workspace_hook
assert "return nationalProject.id" in workspace_hook
assert "NATIONAL_WORKSPACE_REGION" in workspace_hook
assert "externalApi.resolveCoverage" in coverage_hook
assert "coverage.outside_supported_scope" in map_workspace
assert "coverageStatusLabel" in map_workspace
> assert "coverageSelectionAvailable" in map_workspace
E assert 'coverageSelectionAvailable' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_rc4_national_coverage.py:432: AssertionError
____ test_runtime_configuration_is_validated_before_container_replacement _____
def test_runtime_configuration_is_validated_before_container_replacement() -> None:
run_script = (ROOT / "deploy" / "unraid" / "run-dockerman-container.sh").read_text(encoding="utf-8")
validation_index = run_script.index("validate_runtime_config")
> replacement_index = run_script.index("docker compose down")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E ValueError: substring not found
backend\tests\test_rc5_release_deployment.py:65: ValueError
___________ test_rc9_loading_and_accessibility_states_are_explicit ____________
def test_rc9_loading_and_accessibility_states_are_explicit() -> None:
app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8")
map_workspace = (
ROOT / "frontend" / "src" / "components" / "map" / "MapWorkspace.tsx"
).read_text(encoding="utf-8")
geo_map = (ROOT / "frontend" / "src" / "components" / "GeoMap.tsx").read_text(
encoding="utf-8"
)
assert "workspaceDataLoading" in app
assert 'role="status" aria-live="polite"' in app
assert "Databronnen worden gecontroleerd" in map_workspace
> assert "Beschikbaarheid controleren" in map_workspace
E assert 'Beschikbaarheid controleren' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_rc9_ux_release_contract.py:33: AssertionError
___________ test_all_in_one_deploy_embeds_immutable_build_identity ____________
def test_all_in_one_deploy_embeds_immutable_build_identity() -> None:
dockerfile = (ROOT / "deploy" / "unraid" / "Dockerfile.all-in-one").read_text(encoding="utf-8")
release_script = (ROOT / "deploy" / "unraid" / "deploy-release.sh").read_text(encoding="utf-8")
deploy_powershell = (ROOT / "scripts" / "deploy_tower.ps1").read_text(encoding="utf-8")
deploy_shell = (ROOT / "scripts" / "deploy_tower.sh").read_text(encoding="utf-8")
assert "ARG GEOINTEL_BUILD_SHA=unknown" in dockerfile
assert 'GEOINTEL_BUILD_SHA="${GEOINTEL_BUILD_SHA}"' in dockerfile
assert 'GEOINTEL_BUILD_TIME="${GEOINTEL_BUILD_TIME}"' in dockerfile
assert 'org.opencontainers.image.revision="${GEOINTEL_BUILD_SHA}"' in dockerfile
> assert 'GEOINTEL_BUILD_SHA="$(git rev-parse HEAD)"' in release_script
E assert 'GEOINTEL_BUILD_SHA="$(git rev-parse HEAD)"' in '#!/usr/bin/env bash\nset -euo pipefail\n\nROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"\ncd "$ROOT"\n\nG...ge.revision"}} created={{index .Config.Labels "org.opencontainers.image.created"}}\' \\\n "$GEOINTEL_RELEASE_IMAGE"\n'
backend\tests\test_rc_runtime_observability.py:47: AssertionError
_____________ test_frontend_exposes_map_bbox_selection_contracts ______________
def test_frontend_exposes_map_bbox_selection_contracts() -> None:
api_client = (ROOT / "frontend" / "src" / "services" / "api" / "datasets.ts").read_text(encoding="utf-8")
map_workspace = (ROOT / "frontend" / "src" / "components" / "map" / "MapWorkspace.tsx").read_text(encoding="utf-8")
geomap = (ROOT / "frontend" / "src" / "components" / "GeoMap.tsx").read_text(encoding="utf-8")
app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8")
extract_hook = (ROOT / "frontend" / "src" / "hooks" / "useMapSelectionExtract.ts").read_text(encoding="utf-8")
theme_hook = (ROOT / "frontend" / "src" / "hooks" / "useMapThemeSelectionInsights.ts").read_text(encoding="utf-8")
assert "selectVectorFeatures" in api_client
assert "Area selection" in map_workspace
assert "Teken rechthoek" in map_workspace
assert "Objecten in gebied ophalen" in map_workspace
assert "Gebiedsdownload bewaren" in map_workspace
assert "bboxSelectionMode" in geomap
assert "selection-bbox" in geomap
assert "selection-result" in geomap
assert "useMapSelectionExtract" in app
assert "area_id: areaId" in extract_hook
assert "area_id: areaId" in theme_hook
> assert "analyzeSelection(selectedAreaBbox, selectedMapArea?.id)" in map_workspace
E assert 'analyzeSelection(selectedAreaBbox, selectedMapArea?.id)' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint106_map_bbox_extract.py:356: AssertionError
______ test_frontend_declares_national_scope_as_primary_operating_focus _______
def test_frontend_declares_national_scope_as_primary_operating_focus() -> None:
focus = (ROOT / "frontend" / "src" / "config" / "primaryFocus.ts").read_text(
encoding="utf-8"
)
project_hook = (ROOT / "frontend" / "src" / "hooks" / "useProjectWorkspace.ts").read_text(
encoding="utf-8"
)
map_source = (ROOT / "frontend" / "src" / "components" / "GeoMap.tsx").read_text(
encoding="utf-8"
)
navigation = (
ROOT
/ "frontend"
/ "src"
/ "components"
/ "shell"
/ "WorkbenchNavigation.tsx"
).read_text(encoding="utf-8")
assert "NATIONAL_WORKSPACE_PROJECT_NAME = 'Belgium and North Sea Workbench'" in focus
assert "NATIONAL_WORKSPACE_REGION = 'Belgie en Belgische Noordzee'" in focus
assert "NATIONAL_MAP_CENTER" in focus
assert "return nationalProject.id" in project_hook
assert "hasMappedAnalysisContext(data)" in project_hook
assert "dataset.dataset_type === 'raster'" in project_hook
assert "dataset.dataset_type === 'vector' || dataset.dataset_type === 'geojson'" in project_hook
assert "PRIMARY_FOCUS_AREA_NAME" not in project_hook
assert "PRIMARY_FOCUS_AREA_GEOJSON" not in project_hook
assert "center: NATIONAL_MAP_CENTER" in map_source
assert "zoom: NATIONAL_MAP_ZOOM" in map_source
assert "GeoIntel" in navigation
> assert "Atlas Workbench" in navigation
E AssertionError: assert 'Atlas Workbench' in 'import {\n Activity,\n Bot,\n Database,\n Download,\n Map,\n ScanSearch,\n Settings,\n ShieldCheck,\n type L... )\n })}\n </div>\n ))}\n </nav>\n <ItWorxSignature />\n </aside>\n )\n}\n'
backend\tests\test_sprint177_mol_primary_focus.py:38: AssertionError
______ test_product_docs_record_national_scope_and_mol_regression_focus _______
def test_product_docs_record_national_scope_and_mol_regression_focus() -> None:
readme = (ROOT / "README.md").read_text(encoding="utf-8")
vision = (ROOT / "docs" / "PRODUCT_VISION.md").read_text(encoding="utf-8")
> assert "Belgium and the Belgian North Sea" in readme
E assert 'Belgium and the Belgian North Sea' in '# GeoIntel\n\n<p align="center">\n <img src="frontend/public/geointel-icon.png" width="92" alt="GeoIntel logo">\n</p...\n\nActieve mijlpaal: **v1.0.0 Belgium and Belgian North Sea**.\n\nGeoIntel is een project van Jens / ITWorx.tech.\n'
backend\tests\test_sprint177_mol_primary_focus.py:62: AssertionError
_____________ test_map_first_explorer_is_the_default_product_flow _____________
def test_map_first_explorer_is_the_default_product_flow() -> None:
app = read("frontend/src/App.tsx")
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
assert "useState<WorkspaceKey>('map')" in app
assert "Gebied analyseren" in workspace
> assert "<h3>Focus op de kaart <small>optioneel</small></h3>" in workspace
E assert '<h3>Focus op de kaart <small>optioneel</small></h3>' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint186_map_first_geographic_explorer.py:19: AssertionError
___________ test_map_rectangle_drag_is_wired_to_automatic_analysis ____________
def test_map_rectangle_drag_is_wired_to_automatic_analysis() -> None:
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
geomap = read("frontend/src/components/GeoMap.tsx")
styles = read("frontend/src/styles/app.css")
assert "onMapBboxPreview={handleMapBboxPreview}" in workspace
assert "onMapBboxSelect={handleMapBboxSelect}" in workspace
assert "void analyzeSelection(bbox, areaIdForSelection(bbox))" in workspace
assert "const areaIdForSelection" in workspace
assert "bbox && selectedMapArea ? selectedMapArea.id : undefined" in workspace
> assert "void analyzeSelection(selectedAreaBbox, selectedMapArea?.id)" in workspace
E assert 'void analyzeSelection(selectedAreaBbox, selectedMapArea?.id)' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint186_map_first_geographic_explorer.py:44: AssertionError
__ test_evolution_theme_catalog_distinguishes_history_from_current_only_data __
def test_evolution_theme_catalog_distinguishes_history_from_current_only_data() -> None:
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
assert "analysisMode === 'current'" in workspace
> assert "Boolean(dataset || onDemandProduct)" in workspace
E assert 'Boolean(dataset || onDemandProduct)' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint200_temporal_explorer_handoff.py:25: AssertionError
_____ test_regional_map_uses_logical_partition_groups_and_exact_analysis ______
def test_regional_map_uses_logical_partition_groups_and_exact_analysis() -> None:
app = (ROOT / "frontend/src/App.tsx").read_text(encoding="utf-8")
workspace = (ROOT / "frontend/src/components/map/MapWorkspace.tsx").read_text(encoding="utf-8")
hook = (ROOT / "frontend/src/hooks/useMapThemeSelectionInsights.ts").read_text(encoding="utf-8")
api = (ROOT / "frontend/src/services/api/datasets.ts").read_text(encoding="utf-8")
assert "regionalScopeSelected" in workspace
assert "rasterPartitionsForDataset" in workspace
assert "imageOverlays={activeImageOverlays}" in workspace
> assert "de juiste gemeentelijke rasters worden automatisch gecombineerd" in workspace
E assert 'de juiste gemeentelijke rasters worden automatisch gecombineerd' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint219_regional_raster_explorer.py:30: AssertionError
___ test_frontend_uses_partitioned_bathymetry_selection_for_regional_scope ____
def test_frontend_uses_partitioned_bathymetry_selection_for_regional_scope() -> None:
app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8")
index = (ROOT / "frontend" / "index.html").read_text(encoding="utf-8")
focus = (
ROOT / "frontend" / "src" / "config" / "primaryFocus.ts"
).read_text(encoding="utf-8")
map_workspace = (
ROOT / "frontend" / "src" / "components" / "map" / "MapWorkspace.tsx"
).read_text(encoding="utf-8")
theme_hook = (
ROOT / "frontend" / "src" / "hooks" / "useMapThemeSelectionInsights.ts"
).read_text(encoding="utf-8")
dataset_api = (
ROOT / "frontend" / "src" / "services" / "api" / "datasets.ts"
).read_text(encoding="utf-8")
assert "isPartitionedBathymetry" in map_workspace
assert "regionalPartitionedThemeActive" in map_workspace
> assert "datasetAvailabilityLabel(dataset, partitions)" in map_workspace
E assert 'datasetAvailabilityLabel(dataset, partitions)' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint236_bathymetry_expansion.py:478: AssertionError
____ test_flanders_workspace_exposes_governed_thematic_products_on_demand _____
def test_flanders_workspace_exposes_governed_thematic_products_on_demand() -> None:
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
product_hook = read("frontend/src/hooks/useOfficialMapProducts.ts")
selection_hook = read("frontend/src/hooks/useMapThemeSelectionInsights.ts")
api = read("frontend/src/services/api/datasets.ts")
assert "activeScopeProject?.name === FLANDERS_WORKSPACE_PROJECT_NAME" in workspace
assert "new Map<DataThemeId, OnDemandMapProduct>" in workspace
> assert "'Automatisch'" in workspace
E assert "'Automatisch'" in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint237_flanders_thematic_on_demand.py:19: AssertionError
________ test_selection_reads_and_bounded_acquires_all_relevant_themes ________
def test_selection_reads_and_bounded_acquires_all_relevant_themes() -> None:
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
app = read("frontend/src/App.tsx")
selection_hook = read("frontend/src/hooks/useMapThemeSelectionInsights.ts")
> assert "for (const theme of [activeTheme])" in workspace
E assert 'for (const theme of [activeTheme])' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint237_flanders_thematic_on_demand.py:37: AssertionError
______ test_regional_on_demand_sources_require_a_bounded_drawn_selection ______
def test_regional_on_demand_sources_require_a_bounded_drawn_selection() -> None:
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
assert "regionalOnDemandThemeActive" in workspace
> assert "regionalRasterThemeActive || regionalOnDemandThemeActive" in workspace
E assert 'regionalRasterThemeActive || regionalOnDemandThemeActive' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint237_flanders_thematic_on_demand.py:56: AssertionError
_____ test_grb_frontend_and_contracts_use_only_the_governed_backend_path ______
def test_grb_frontend_and_contracts_use_only_the_governed_backend_path() -> None:
selection_hook = (ROOT / "frontend/src/hooks/useMapThemeSelectionInsights.ts").read_text(encoding="utf-8")
catalog_hook = (ROOT / "frontend/src/hooks/useOfficialMapProducts.ts").read_text(encoding="utf-8")
workspace = (ROOT / "frontend/src/components/map/MapWorkspace.tsx").read_text(encoding="utf-8")
contracts = (ROOT / "docs/API_CONTRACTS.md").read_text(encoding="utf-8")
assert "datasetsApi.acquireGrb" in selection_hook
assert "datasetsApi.listGrbProducts" in catalog_hook
assert "officialMapProducts.grb" in workspace
assert "result[product.key] = null" in workspace
assert ": onDemandThemeActive\n ? null\n : mapFeatureCollection" in workspace
assert "onSetContextLayerLabel" in workspace
> assert "'Automatisch'" in workspace
E assert "'Automatisch'" in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint239_bounded_grb_acquisition.py:394: AssertionError
__________ test_app_entrypoint_has_clean_encoding_and_react_imports ___________
def test_app_entrypoint_has_clean_encoding_and_react_imports() -> None:
app_path = ROOT / "frontend" / "src" / "App.tsx"
app_bytes = app_path.read_bytes()
app = app_path.read_text(encoding="utf-8")
assert not app_bytes.startswith(b"\xef\xbb\xbf")
assert "import { useEffect, useMemo, useRef, useState } from 'react'" in app
assert "FormEvent" not in app
> assert app.count("useEffect(") == 1
E assert 3 == 1
E + where 3 = <built-in method count of str object at 0x000001FED98D8C30>('useEffect(')
E + where <built-in method count of str object at 0x000001FED98D8C30> = "import { useEffect, useMemo, useRef, useState } from 'react'\nimport { CircleAlert, LogOut, ShieldCheck, UserRound } ...ator' : 'open')}\n loggingOut={loggingOut}\n onLogout={handleLogout}\n />\n )\n}\n\nexport default App\n".count
backend\tests\test_sprint39_frontend_orchestration_hooks.py:40: AssertionError
- generated xml file: C:\Projects\geointel\artifacts\evidence\accuracy\P1\backend-full-suite.junit.xml -
=========================== short test summary info ===========================
FAILED backend\tests\test_rc4_national_coverage.py::test_frontend_prefers_materialized_national_workspace_and_resolves_drawn_bbox
FAILED backend\tests\test_rc5_release_deployment.py::test_runtime_configuration_is_validated_before_container_replacement
FAILED backend\tests\test_rc9_ux_release_contract.py::test_rc9_loading_and_accessibility_states_are_explicit
FAILED backend\tests\test_rc_runtime_observability.py::test_all_in_one_deploy_embeds_immutable_build_identity
FAILED backend\tests\test_sprint106_map_bbox_extract.py::test_frontend_exposes_map_bbox_selection_contracts
FAILED backend\tests\test_sprint177_mol_primary_focus.py::test_frontend_declares_national_scope_as_primary_operating_focus
FAILED backend\tests\test_sprint177_mol_primary_focus.py::test_product_docs_record_national_scope_and_mol_regression_focus
FAILED backend\tests\test_sprint186_map_first_geographic_explorer.py::test_map_first_explorer_is_the_default_product_flow
FAILED backend\tests\test_sprint186_map_first_geographic_explorer.py::test_map_rectangle_drag_is_wired_to_automatic_analysis
FAILED backend\tests\test_sprint200_temporal_explorer_handoff.py::test_evolution_theme_catalog_distinguishes_history_from_current_only_data
FAILED backend\tests\test_sprint219_regional_raster_explorer.py::test_regional_map_uses_logical_partition_groups_and_exact_analysis
FAILED backend\tests\test_sprint236_bathymetry_expansion.py::test_frontend_uses_partitioned_bathymetry_selection_for_regional_scope
FAILED backend\tests\test_sprint237_flanders_thematic_on_demand.py::test_flanders_workspace_exposes_governed_thematic_products_on_demand
FAILED backend\tests\test_sprint237_flanders_thematic_on_demand.py::test_selection_reads_and_bounded_acquires_all_relevant_themes
FAILED backend\tests\test_sprint237_flanders_thematic_on_demand.py::test_regional_on_demand_sources_require_a_bounded_drawn_selection
FAILED backend\tests\test_sprint239_bounded_grb_acquisition.py::test_grb_frontend_and_contracts_use_only_the_governed_backend_path
FAILED backend\tests\test_sprint39_frontend_orchestration_hooks.py::test_app_entrypoint_has_clean_encoding_and_react_imports
17 failed, 1180 passed in 70.63s (0:01:10)
command=python -m pytest backend/tests -q -p no:cacheprovider -W error::DeprecationWarning --junitxml=artifacts/evidence/accuracy/P1/backend-full-suite.junit.xml
exit_code=1
captured_at=2026-08-01T18:32:02.4460806+02:00
........................................................................ [ 6%]
........................................................................ [ 12%]
.........................................F..........F..................F [ 18%]
..................F..................................................... [ 24%]
.........F.............................................................. [ 30%]
........................................................................ [ 36%]
.....F.F.......................................FF....................... [ 42%]
........................................................................ [ 48%]
..F..................................................................... [ 54%]
........................................................................ [ 60%]
.......F................................................................ [ 66%]
........................................................................ [ 72%]
........................................FFFF...........F................ [ 78%]
...............................................F........................ [ 84%]
........................................................................ [ 90%]
........................................................................ [ 96%]
............................................. [100%]
================================== FAILURES ===================================
_ test_frontend_prefers_materialized_national_workspace_and_resolves_drawn_bbox _
def test_frontend_prefers_materialized_national_workspace_and_resolves_drawn_bbox() -> None:
root = Path(__file__).parents[2]
focus = (root / "frontend" / "src" / "config" / "primaryFocus.ts").read_text(encoding="utf-8")
workspace_hook = (root / "frontend" / "src" / "hooks" / "useProjectWorkspace.ts").read_text(encoding="utf-8")
coverage_hook = (root / "frontend" / "src" / "hooks" / "useCoverageResolver.ts").read_text(encoding="utf-8")
map_workspace = (root / "frontend" / "src" / "components" / "map" / "MapWorkspace.tsx").read_text(encoding="utf-8")
assert "Belgium and North Sea Workbench" in focus
assert "nationalProject" in workspace_hook
assert "return nationalProject.id" in workspace_hook
assert "NATIONAL_WORKSPACE_REGION" in workspace_hook
assert "externalApi.resolveCoverage" in coverage_hook
assert "coverage.outside_supported_scope" in map_workspace
assert "coverageStatusLabel" in map_workspace
> assert "coverageSelectionAvailable" in map_workspace
E assert 'coverageSelectionAvailable' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_rc4_national_coverage.py:432: AssertionError
____ test_runtime_configuration_is_validated_before_container_replacement _____
def test_runtime_configuration_is_validated_before_container_replacement() -> None:
run_script = (ROOT / "deploy" / "unraid" / "run-dockerman-container.sh").read_text(encoding="utf-8")
validation_index = run_script.index("validate_runtime_config")
> replacement_index = run_script.index("docker compose down")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E ValueError: substring not found
backend\tests\test_rc5_release_deployment.py:65: ValueError
___________ test_rc9_loading_and_accessibility_states_are_explicit ____________
def test_rc9_loading_and_accessibility_states_are_explicit() -> None:
app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8")
map_workspace = (
ROOT / "frontend" / "src" / "components" / "map" / "MapWorkspace.tsx"
).read_text(encoding="utf-8")
geo_map = (ROOT / "frontend" / "src" / "components" / "GeoMap.tsx").read_text(
encoding="utf-8"
)
assert "workspaceDataLoading" in app
assert 'role="status" aria-live="polite"' in app
assert "Databronnen worden gecontroleerd" in map_workspace
> assert "Beschikbaarheid controleren" in map_workspace
E assert 'Beschikbaarheid controleren' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_rc9_ux_release_contract.py:33: AssertionError
___________ test_all_in_one_deploy_embeds_immutable_build_identity ____________
def test_all_in_one_deploy_embeds_immutable_build_identity() -> None:
dockerfile = (ROOT / "deploy" / "unraid" / "Dockerfile.all-in-one").read_text(encoding="utf-8")
release_script = (ROOT / "deploy" / "unraid" / "deploy-release.sh").read_text(encoding="utf-8")
deploy_powershell = (ROOT / "scripts" / "deploy_tower.ps1").read_text(encoding="utf-8")
deploy_shell = (ROOT / "scripts" / "deploy_tower.sh").read_text(encoding="utf-8")
assert "ARG GEOINTEL_BUILD_SHA=unknown" in dockerfile
assert 'GEOINTEL_BUILD_SHA="${GEOINTEL_BUILD_SHA}"' in dockerfile
assert 'GEOINTEL_BUILD_TIME="${GEOINTEL_BUILD_TIME}"' in dockerfile
assert 'org.opencontainers.image.revision="${GEOINTEL_BUILD_SHA}"' in dockerfile
> assert 'GEOINTEL_BUILD_SHA="$(git rev-parse HEAD)"' in release_script
E assert 'GEOINTEL_BUILD_SHA="$(git rev-parse HEAD)"' in '#!/usr/bin/env bash\nset -euo pipefail\n\nROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"\ncd "$ROOT"\n\nG...ge.revision"}} created={{index .Config.Labels "org.opencontainers.image.created"}}\' \\\n "$GEOINTEL_RELEASE_IMAGE"\n'
backend\tests\test_rc_runtime_observability.py:47: AssertionError
_____________ test_frontend_exposes_map_bbox_selection_contracts ______________
def test_frontend_exposes_map_bbox_selection_contracts() -> None:
api_client = (ROOT / "frontend" / "src" / "services" / "api" / "datasets.ts").read_text(encoding="utf-8")
map_workspace = (ROOT / "frontend" / "src" / "components" / "map" / "MapWorkspace.tsx").read_text(encoding="utf-8")
geomap = (ROOT / "frontend" / "src" / "components" / "GeoMap.tsx").read_text(encoding="utf-8")
app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8")
extract_hook = (ROOT / "frontend" / "src" / "hooks" / "useMapSelectionExtract.ts").read_text(encoding="utf-8")
theme_hook = (ROOT / "frontend" / "src" / "hooks" / "useMapThemeSelectionInsights.ts").read_text(encoding="utf-8")
assert "selectVectorFeatures" in api_client
assert "Area selection" in map_workspace
assert "Teken rechthoek" in map_workspace
assert "Objecten in gebied ophalen" in map_workspace
assert "Gebiedsdownload bewaren" in map_workspace
assert "bboxSelectionMode" in geomap
assert "selection-bbox" in geomap
assert "selection-result" in geomap
assert "useMapSelectionExtract" in app
assert "area_id: areaId" in extract_hook
assert "area_id: areaId" in theme_hook
> assert "analyzeSelection(selectedAreaBbox, selectedMapArea?.id)" in map_workspace
E assert 'analyzeSelection(selectedAreaBbox, selectedMapArea?.id)' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint106_map_bbox_extract.py:356: AssertionError
______ test_frontend_declares_national_scope_as_primary_operating_focus _______
def test_frontend_declares_national_scope_as_primary_operating_focus() -> None:
focus = (ROOT / "frontend" / "src" / "config" / "primaryFocus.ts").read_text(
encoding="utf-8"
)
project_hook = (ROOT / "frontend" / "src" / "hooks" / "useProjectWorkspace.ts").read_text(
encoding="utf-8"
)
map_source = (ROOT / "frontend" / "src" / "components" / "GeoMap.tsx").read_text(
encoding="utf-8"
)
navigation = (
ROOT
/ "frontend"
/ "src"
/ "components"
/ "shell"
/ "WorkbenchNavigation.tsx"
).read_text(encoding="utf-8")
assert "NATIONAL_WORKSPACE_PROJECT_NAME = 'Belgium and North Sea Workbench'" in focus
assert "NATIONAL_WORKSPACE_REGION = 'Belgie en Belgische Noordzee'" in focus
assert "NATIONAL_MAP_CENTER" in focus
assert "return nationalProject.id" in project_hook
assert "hasMappedAnalysisContext(data)" in project_hook
assert "dataset.dataset_type === 'raster'" in project_hook
assert "dataset.dataset_type === 'vector' || dataset.dataset_type === 'geojson'" in project_hook
assert "PRIMARY_FOCUS_AREA_NAME" not in project_hook
assert "PRIMARY_FOCUS_AREA_GEOJSON" not in project_hook
assert "center: NATIONAL_MAP_CENTER" in map_source
assert "zoom: NATIONAL_MAP_ZOOM" in map_source
assert "GeoIntel" in navigation
> assert "Atlas Workbench" in navigation
E AssertionError: assert 'Atlas Workbench' in 'import {\n Activity,\n Bot,\n Database,\n Download,\n Map,\n ScanSearch,\n Settings,\n ShieldCheck,\n type L... )\n })}\n </div>\n ))}\n </nav>\n <ItWorxSignature />\n </aside>\n )\n}\n'
backend\tests\test_sprint177_mol_primary_focus.py:38: AssertionError
______ test_product_docs_record_national_scope_and_mol_regression_focus _______
def test_product_docs_record_national_scope_and_mol_regression_focus() -> None:
readme = (ROOT / "README.md").read_text(encoding="utf-8")
vision = (ROOT / "docs" / "PRODUCT_VISION.md").read_text(encoding="utf-8")
> assert "Belgium and the Belgian North Sea" in readme
E assert 'Belgium and the Belgian North Sea' in '# GeoIntel\n\n<p align="center">\n <img src="frontend/public/geointel-icon.png" width="92" alt="GeoIntel logo">\n</p...\n\nActieve mijlpaal: **v1.0.0 Belgium and Belgian North Sea**.\n\nGeoIntel is een project van Jens / ITWorx.tech.\n'
backend\tests\test_sprint177_mol_primary_focus.py:62: AssertionError
_____________ test_map_first_explorer_is_the_default_product_flow _____________
def test_map_first_explorer_is_the_default_product_flow() -> None:
app = read("frontend/src/App.tsx")
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
assert "useState<WorkspaceKey>('map')" in app
assert "Gebied analyseren" in workspace
> assert "<h3>Focus op de kaart <small>optioneel</small></h3>" in workspace
E assert '<h3>Focus op de kaart <small>optioneel</small></h3>' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint186_map_first_geographic_explorer.py:19: AssertionError
___________ test_map_rectangle_drag_is_wired_to_automatic_analysis ____________
def test_map_rectangle_drag_is_wired_to_automatic_analysis() -> None:
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
geomap = read("frontend/src/components/GeoMap.tsx")
styles = read("frontend/src/styles/app.css")
assert "onMapBboxPreview={handleMapBboxPreview}" in workspace
assert "onMapBboxSelect={handleMapBboxSelect}" in workspace
assert "void analyzeSelection(bbox, areaIdForSelection(bbox))" in workspace
assert "const areaIdForSelection" in workspace
assert "bbox && selectedMapArea ? selectedMapArea.id : undefined" in workspace
> assert "void analyzeSelection(selectedAreaBbox, selectedMapArea?.id)" in workspace
E assert 'void analyzeSelection(selectedAreaBbox, selectedMapArea?.id)' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint186_map_first_geographic_explorer.py:44: AssertionError
__ test_evolution_theme_catalog_distinguishes_history_from_current_only_data __
def test_evolution_theme_catalog_distinguishes_history_from_current_only_data() -> None:
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
assert "analysisMode === 'current'" in workspace
> assert "Boolean(dataset || onDemandProduct)" in workspace
E assert 'Boolean(dataset || onDemandProduct)' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint200_temporal_explorer_handoff.py:25: AssertionError
_____ test_regional_map_uses_logical_partition_groups_and_exact_analysis ______
def test_regional_map_uses_logical_partition_groups_and_exact_analysis() -> None:
app = (ROOT / "frontend/src/App.tsx").read_text(encoding="utf-8")
workspace = (ROOT / "frontend/src/components/map/MapWorkspace.tsx").read_text(encoding="utf-8")
hook = (ROOT / "frontend/src/hooks/useMapThemeSelectionInsights.ts").read_text(encoding="utf-8")
api = (ROOT / "frontend/src/services/api/datasets.ts").read_text(encoding="utf-8")
assert "regionalScopeSelected" in workspace
assert "rasterPartitionsForDataset" in workspace
assert "imageOverlays={activeImageOverlays}" in workspace
> assert "de juiste gemeentelijke rasters worden automatisch gecombineerd" in workspace
E assert 'de juiste gemeentelijke rasters worden automatisch gecombineerd' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint219_regional_raster_explorer.py:30: AssertionError
___ test_frontend_uses_partitioned_bathymetry_selection_for_regional_scope ____
def test_frontend_uses_partitioned_bathymetry_selection_for_regional_scope() -> None:
app = (ROOT / "frontend" / "src" / "App.tsx").read_text(encoding="utf-8")
index = (ROOT / "frontend" / "index.html").read_text(encoding="utf-8")
focus = (
ROOT / "frontend" / "src" / "config" / "primaryFocus.ts"
).read_text(encoding="utf-8")
map_workspace = (
ROOT / "frontend" / "src" / "components" / "map" / "MapWorkspace.tsx"
).read_text(encoding="utf-8")
theme_hook = (
ROOT / "frontend" / "src" / "hooks" / "useMapThemeSelectionInsights.ts"
).read_text(encoding="utf-8")
dataset_api = (
ROOT / "frontend" / "src" / "services" / "api" / "datasets.ts"
).read_text(encoding="utf-8")
assert "isPartitionedBathymetry" in map_workspace
assert "regionalPartitionedThemeActive" in map_workspace
> assert "datasetAvailabilityLabel(dataset, partitions)" in map_workspace
E assert 'datasetAvailabilityLabel(dataset, partitions)' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint236_bathymetry_expansion.py:478: AssertionError
____ test_flanders_workspace_exposes_governed_thematic_products_on_demand _____
def test_flanders_workspace_exposes_governed_thematic_products_on_demand() -> None:
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
product_hook = read("frontend/src/hooks/useOfficialMapProducts.ts")
selection_hook = read("frontend/src/hooks/useMapThemeSelectionInsights.ts")
api = read("frontend/src/services/api/datasets.ts")
assert "activeScopeProject?.name === FLANDERS_WORKSPACE_PROJECT_NAME" in workspace
assert "new Map<DataThemeId, OnDemandMapProduct>" in workspace
> assert "'Automatisch'" in workspace
E assert "'Automatisch'" in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint237_flanders_thematic_on_demand.py:19: AssertionError
________ test_selection_reads_and_bounded_acquires_all_relevant_themes ________
def test_selection_reads_and_bounded_acquires_all_relevant_themes() -> None:
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
app = read("frontend/src/App.tsx")
selection_hook = read("frontend/src/hooks/useMapThemeSelectionInsights.ts")
> assert "for (const theme of [activeTheme])" in workspace
E assert 'for (const theme of [activeTheme])' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint237_flanders_thematic_on_demand.py:37: AssertionError
______ test_regional_on_demand_sources_require_a_bounded_drawn_selection ______
def test_regional_on_demand_sources_require_a_bounded_drawn_selection() -> None:
workspace = read("frontend/src/components/map/MapWorkspace.tsx")
assert "regionalOnDemandThemeActive" in workspace
> assert "regionalRasterThemeActive || regionalOnDemandThemeActive" in workspace
E assert 'regionalRasterThemeActive || regionalOnDemandThemeActive' in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint237_flanders_thematic_on_demand.py:56: AssertionError
_____ test_grb_frontend_and_contracts_use_only_the_governed_backend_path ______
def test_grb_frontend_and_contracts_use_only_the_governed_backend_path() -> None:
selection_hook = (ROOT / "frontend/src/hooks/useMapThemeSelectionInsights.ts").read_text(encoding="utf-8")
catalog_hook = (ROOT / "frontend/src/hooks/useOfficialMapProducts.ts").read_text(encoding="utf-8")
workspace = (ROOT / "frontend/src/components/map/MapWorkspace.tsx").read_text(encoding="utf-8")
contracts = (ROOT / "docs/API_CONTRACTS.md").read_text(encoding="utf-8")
assert "datasetsApi.acquireGrb" in selection_hook
assert "datasetsApi.listGrbProducts" in catalog_hook
assert "officialMapProducts.grb" in workspace
assert "result[product.key] = null" in workspace
assert ": onDemandThemeActive\n ? null\n : mapFeatureCollection" in workspace
assert "onSetContextLayerLabel" in workspace
> assert "'Automatisch'" in workspace
E assert "'Automatisch'" in "import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react'\nimport { BoxSelect, Ch...ijken.</p>\n )}\n </div>\n </div>\n </details>\n </div>\n </section>\n )\n}\n"
backend\tests\test_sprint239_bounded_grb_acquisition.py:394: AssertionError
__________ test_app_entrypoint_has_clean_encoding_and_react_imports ___________
def test_app_entrypoint_has_clean_encoding_and_react_imports() -> None:
app_path = ROOT / "frontend" / "src" / "App.tsx"
app_bytes = app_path.read_bytes()
app = app_path.read_text(encoding="utf-8")
assert not app_bytes.startswith(b"\xef\xbb\xbf")
assert "import { useEffect, useMemo, useRef, useState } from 'react'" in app
assert "FormEvent" not in app
> assert app.count("useEffect(") == 1
E assert 3 == 1
E + where 3 = <built-in method count of str object at 0x000001FED98D8C30>('useEffect(')
E + where <built-in method count of str object at 0x000001FED98D8C30> = "import { useEffect, useMemo, useRef, useState } from 'react'\nimport { CircleAlert, LogOut, ShieldCheck, UserRound } ...ator' : 'open')}\n loggingOut={loggingOut}\n onLogout={handleLogout}\n />\n )\n}\n\nexport default App\n".count
backend\tests\test_sprint39_frontend_orchestration_hooks.py:40: AssertionError
- generated xml file: C:\Projects\geointel\artifacts\evidence\accuracy\P1\backend-full-suite.junit.xml -
=========================== short test summary info ===========================
FAILED backend\tests\test_rc4_national_coverage.py::test_frontend_prefers_materialized_national_workspace_and_resolves_drawn_bbox
FAILED backend\tests\test_rc5_release_deployment.py::test_runtime_configuration_is_validated_before_container_replacement
FAILED backend\tests\test_rc9_ux_release_contract.py::test_rc9_loading_and_accessibility_states_are_explicit
FAILED backend\tests\test_rc_runtime_observability.py::test_all_in_one_deploy_embeds_immutable_build_identity
FAILED backend\tests\test_sprint106_map_bbox_extract.py::test_frontend_exposes_map_bbox_selection_contracts
FAILED backend\tests\test_sprint177_mol_primary_focus.py::test_frontend_declares_national_scope_as_primary_operating_focus
FAILED backend\tests\test_sprint177_mol_primary_focus.py::test_product_docs_record_national_scope_and_mol_regression_focus
FAILED backend\tests\test_sprint186_map_first_geographic_explorer.py::test_map_first_explorer_is_the_default_product_flow
FAILED backend\tests\test_sprint186_map_first_geographic_explorer.py::test_map_rectangle_drag_is_wired_to_automatic_analysis
FAILED backend\tests\test_sprint200_temporal_explorer_handoff.py::test_evolution_theme_catalog_distinguishes_history_from_current_only_data
FAILED backend\tests\test_sprint219_regional_raster_explorer.py::test_regional_map_uses_logical_partition_groups_and_exact_analysis
FAILED backend\tests\test_sprint236_bathymetry_expansion.py::test_frontend_uses_partitioned_bathymetry_selection_for_regional_scope
FAILED backend\tests\test_sprint237_flanders_thematic_on_demand.py::test_flanders_workspace_exposes_governed_thematic_products_on_demand
FAILED backend\tests\test_sprint237_flanders_thematic_on_demand.py::test_selection_reads_and_bounded_acquires_all_relevant_themes
FAILED backend\tests\test_sprint237_flanders_thematic_on_demand.py::test_regional_on_demand_sources_require_a_bounded_drawn_selection
FAILED backend\tests\test_sprint239_bounded_grb_acquisition.py::test_grb_frontend_and_contracts_use_only_the_governed_backend_path
FAILED backend\tests\test_sprint39_frontend_orchestration_hooks.py::test_app_entrypoint_has_clean_encoding_and_react_imports
17 failed, 1180 passed in 70.63s (0:01:10)
@@ -0,0 +1,278 @@
{
"audited_repository_head": "3d442ef43fac0fdf1b86f3149c9b4c512830a39d",
"claim_boundary": "This manifest proves retained-file identity and completeness. It does not establish model accuracy, human label acceptance, split independence or release readiness.",
"evidence_file_count": 28,
"evidence_files": [
{
"path": "artifacts/evidence/accuracy/P1/alembic-heads.txt",
"role": "execution_log",
"sha256": "da4521233c6718fc7a5865c53904e73685fbdce65a1449b19cd0dc2e40d037ed",
"size_bytes": 116
},
{
"path": "artifacts/evidence/accuracy/P1/alembic-offline-upgrade.sql",
"role": "migration_evidence",
"sha256": "e8905b881890cf95885a7515e3d9dcf2a7a0a24c4edbc57e98a363edcb22dd0e",
"size_bytes": 20199
},
{
"path": "artifacts/evidence/accuracy/P1/backend-ci-entrypoint.txt",
"role": "execution_log",
"sha256": "0ac774ec19b4ff0a15142aab5f1db68c2592a230401d794ae7d040320e3ac0c0",
"size_bytes": 1601
},
{
"path": "artifacts/evidence/accuracy/P1/backend-full-suite.junit.xml",
"role": "test_report",
"sha256": "a01d0b5b6974d7ed184f46e8e35ac3b06c9a5db565e45e140b5f799819396b08",
"size_bytes": 207086
},
{
"path": "artifacts/evidence/accuracy/P1/backend-full-suite.txt",
"role": "execution_log",
"sha256": "8521ed48b17b382752418750b3ea374831958fb063e83ef87048212e0fd5ea69",
"size_bytes": 23972
},
{
"path": "artifacts/evidence/accuracy/P1/commands-and-results.md",
"role": "execution_log",
"sha256": "451d4cfc2d6d67937411b23192d9418ef6721af678aed1b0d5cb82113d82efc5",
"size_bytes": 8427
},
{
"path": "artifacts/evidence/accuracy/P1/forensic-reproductions.json",
"role": "defect_reproduction",
"sha256": "f6349199a15ae789092d3d65c17a39a9b32ea3ed557571c0c228c4be3cf7235e",
"size_bytes": 3533
},
{
"path": "artifacts/evidence/accuracy/P1/frontend-build.txt",
"role": "execution_log",
"sha256": "c3b8e10ef177ac1c2dc045bd710df1caeb46f8922a721291be431b304abbc079",
"size_bytes": 2356
},
{
"path": "artifacts/evidence/accuracy/P1/frontend-lint.txt",
"role": "lint_evidence",
"sha256": "1115b013515c753e2dfb73abdad9024aec7b4c2337d117c7e1181341fef15c7f",
"size_bytes": 418
},
{
"path": "artifacts/evidence/accuracy/P1/frontend-typecheck.txt",
"role": "execution_log",
"sha256": "3891c85c77b5ff50a1eb6d27a2a65d40c2c05423768734efd9d980f3784d68fa",
"size_bytes": 163
},
{
"path": "artifacts/evidence/accuracy/P1/frontend-vitest-unit.txt",
"role": "test_evidence",
"sha256": "6341bfa51ca3f4fe5ec7d4af7239c3c5e1a29e6bfe8bdfae85e824a2a6482ad0",
"size_bytes": 2774
},
{
"path": "artifacts/evidence/accuracy/P1/frontend-vitest.txt",
"role": "test_evidence",
"sha256": "8a84afa48cc59e473725ed105a3f88da24f001cdcb794d942ede2ab8f0d48e48",
"size_bytes": 333
},
{
"path": "artifacts/evidence/accuracy/P1/golden-qa-reproducibility.json",
"role": "test_evidence",
"sha256": "576e5667a989c34086db3a2bc57003115a8a61b14e9f49f5407ee380baf0829d",
"size_bytes": 505
},
{
"path": "artifacts/evidence/accuracy/P1/golden-qa-run-1.json",
"role": "test_evidence",
"sha256": "ec96862b024987b59e56579920361582e718126b07885732335ac1b4d51b61bc",
"size_bytes": 5242
},
{
"path": "artifacts/evidence/accuracy/P1/golden-qa-run-2.json",
"role": "test_evidence",
"sha256": "4f900711a706dd56dd16b368e261761051f6d52a38bfd421e7d1c5f66ee51e49",
"size_bytes": 5242
},
{
"path": "artifacts/evidence/accuracy/P1/local-artifact-inventory.json",
"role": "structured_inventory",
"sha256": "0e187dbf3e91ee8e35567d6c8cd6e1cadfa6275d5908b829253491f3804adf7d",
"size_bytes": 75535
},
{
"path": "artifacts/evidence/accuracy/P1/openapi-contract-audit.txt",
"role": "execution_log",
"sha256": "5af3d8f00be3f57fc309bc198fa3995d1eae7270a5f210b3e94d1aeeb653119d",
"size_bytes": 212
},
{
"path": "artifacts/evidence/accuracy/P1/phase1-baseline-summary.json",
"role": "structured_inventory",
"sha256": "7d5960df64bdd4fb9b9d9d7a93de5f9cfd770f4dcf21454899345afe3ab12342",
"size_bytes": 1143
},
{
"path": "artifacts/evidence/accuracy/P1/phase1-tooling-tests.txt",
"role": "test_evidence",
"sha256": "a9bf261e1a811ad3e8bfa8edc439a11f00b46bc157f9ab6fc970033a87f45748",
"size_bytes": 250
},
{
"path": "artifacts/evidence/accuracy/P1/repository-inventory.json",
"role": "structured_inventory",
"sha256": "07fa9356f298f9fe360e2e362ce9f3d558a9a66544fed3a5567cd9a5666451c7",
"size_bytes": 27695
},
{
"path": "artifacts/evidence/accuracy/P1/repository-ruff-baseline.json",
"role": "lint_evidence",
"sha256": "de6617f030e49550e714c49b6e14bf291bf85016fd58086e9ca38b33a52252e9",
"size_bytes": 59359
},
{
"path": "artifacts/evidence/accuracy/P1/repository-ruff-baseline.txt",
"role": "lint_evidence",
"sha256": "cd654cea65710167beff8307cb71533fb645f25247ef46e7adc421bd520c9191",
"size_bytes": 57870
},
{
"path": "artifacts/evidence/accuracy/P1/static-risk-signals.json",
"role": "structured_inventory",
"sha256": "729f0a5d3eece61be8e26d44b5dfa29c6cbf21eb16b8694a2d4dc45c94720757",
"size_bytes": 22467
},
{
"path": "artifacts/evidence/accuracy/P1/tower-gpu-inference-smoke.json",
"role": "runtime_evidence",
"sha256": "692a9fa193d589123b042110d7e80755f0c6634854f3134c291fc6083adb7b77",
"size_bytes": 5675
},
{
"path": "artifacts/evidence/accuracy/P1/tower-key-artifact-hashes.json",
"role": "structured_inventory",
"sha256": "4d88d350604b377682da4d928c37ffb00ea1a32d2690d9b2bd54117363930414",
"size_bytes": 949
},
{
"path": "artifacts/evidence/accuracy/P1/tower-ml-data-lineage-snapshot.json",
"role": "lineage_evidence",
"sha256": "d80275e8198ce63366d2a2d44eb8fba1f27c29d85aaaaedb94991d8c56febfb6",
"size_bytes": 71659
},
{
"path": "artifacts/evidence/accuracy/P1/tower-runtime-database-snapshot-detailed.json",
"role": "runtime_evidence",
"sha256": "744389b6c384a9fb3a9e16e56f1477f3b752e11a5b98e1fad7df47b4703a9ca1",
"size_bytes": 14946
},
{
"path": "artifacts/evidence/accuracy/P1/tower-runtime-database-snapshot.json",
"role": "runtime_evidence",
"sha256": "aa7681d4a19ca20b7b442c509b3f56cb97bf239b2b5cc6a1fb1ca140d5320e9e",
"size_bytes": 10127
}
],
"evidence_root": "artifacts/evidence/accuracy/P1",
"evidence_total_bytes": 629854,
"generated_at": "2026-08-01T17:00:31.742672+00:00",
"program_file_count": 16,
"program_files": [
{
"path": "docs/accuracy-program/00-execution-contract.md",
"role": "phase1_program",
"sha256": "d6c71dbccbb1e1f3bda2835cf9f53c3a5a92c173e9136d5cfccf007ec2c28684",
"size_bytes": 8720
},
{
"path": "docs/accuracy-program/01-system-inventory.md",
"role": "phase1_program",
"sha256": "2b27c28ca06ab8e8a36f12cccc8df23d5e83894e39b8e33406e6a6c05092cf22",
"size_bytes": 15708
},
{
"path": "docs/accuracy-program/02-data-lineage.md",
"role": "phase1_program",
"sha256": "8af25f30d43863438678b3e867c9bf0a318cdac78e12c891254fb2570e2d9d1d",
"size_bytes": 20409
},
{
"path": "docs/accuracy-program/03-baseline-and-gaps.md",
"role": "phase1_program",
"sha256": "ad3c2aae2944443d0f5d09b5c415b6202109071a6f194bb8b09b7df30332e3b3",
"size_bytes": 21253
},
{
"path": "docs/accuracy-program/04-risk-register.md",
"role": "phase1_program",
"sha256": "f3c0d35b95fd180a391950c2a6c9339aa3e4ace0e8512affbd242d159ca1e574",
"size_bytes": 23851
},
{
"path": "docs/accuracy-program/05-metric-framework.md",
"role": "phase1_program",
"sha256": "18abfc21964b7d98848d8ae513afce242184980c9517c9184d40efd9165ea00d",
"size_bytes": 28053
},
{
"path": "docs/accuracy-program/06-implementation-roadmap.md",
"role": "phase1_program",
"sha256": "c76ffebee4a23796ff221e6d4c5b5138f99d55a8b1422e897058b12a78a29ad9",
"size_bytes": 23695
},
{
"path": "docs/accuracy-program/status.json",
"role": "phase1_program",
"sha256": "5841cde783c7d8d4a54b126ed4120c83a553c9dec9a31e6ce45703ce3ab731c4",
"size_bytes": 7953
},
{
"path": "scripts/build_accuracy_phase1_evidence_manifest.py",
"role": "phase1_program",
"sha256": "882a935b29f787fc11a9f7b528392c1727463be24adcb0cac47a09fdb69a8382",
"size_bytes": 5523
},
{
"path": "scripts/collect_accuracy_phase1_inference_smoke.py",
"role": "phase1_program",
"sha256": "6d81541b7aa83f3c03ba5320a8075892eee658905ee981ba727e59f3b1dc792a",
"size_bytes": 6756
},
{
"path": "scripts/collect_accuracy_phase1_ml_lineage.py",
"role": "phase1_program",
"sha256": "3b1d3e45d45f1d4ca1211d1b2c70d9d93e15abc3b3ecfbd2e8302f645d6db7e1",
"size_bytes": 14080
},
{
"path": "scripts/collect_accuracy_phase1_runtime.py",
"role": "phase1_program",
"sha256": "a907779306076dccdf7fcf45f554e4778f5fab0e59d6af55673322775a1f5b4f",
"size_bytes": 13387
},
{
"path": "scripts/reproduce_accuracy_phase1_findings.py",
"role": "phase1_program",
"sha256": "c0f34e6bcaf73dcdada6e5b529a2e8e2177b1e97ee039c586d6ae51bb743015f",
"size_bytes": 9447
},
{
"path": "scripts/run_accuracy_phase1_baseline.py",
"role": "phase1_program",
"sha256": "fcbd280245ccc598cab7ec5ca6448fbb350f7fa59aecc20177fdb0069c416643",
"size_bytes": 14498
},
{
"path": "scripts/verify_accuracy_phase1_evidence.py",
"role": "phase1_program",
"sha256": "fc72c315d26b8b7542fe01666aef56a8538d09090f2c0c877c4dd8a33c93e556",
"size_bytes": 4925
},
{
"path": "tests/test_accuracy_phase1_baseline.py",
"role": "phase1_program",
"sha256": "868f433b7de61e9ab3cd7aa9ad5bb2d29e8286afdcd68274ed290909ec605c7f",
"size_bytes": 3009
}
],
"schema_version": 1
}
@@ -1,116 +1,116 @@
{
"findings": [
{
"expected": "A small buildings partition remains partial; a roads bbox cannot complete buildings coverage.",
"id": "P1-COV-001",
"observed": {
"fully_covered": true,
"matched_dataset_ids": [
"00000000-0000-4000-8000-000000000001"
]
},
"reproduced": true,
"severity": "critical",
"source": "backend/app/services/coverage_registry_service.py:481-505"
},
{
"expected": "A 100 metre buffer is projected to a metric CRS and spans roughly hundreds of metres.",
"id": "P1-CRS-001",
"observed": {
"bounds_epsg4326": [
-95.0,
-49.0,
105.0,
151.0
],
"longitude_span_degrees": 200.0
},
"reproduced": true,
"severity": "critical",
"source": "backend/app/services/vector_operations_service.py:179-203"
},
{
"expected": "Non-WGS84 input is transformed to EPSG:4326 or rejected before persistence.",
"id": "P1-CRS-002",
"observed": {
"stored_coordinates": [
150000.0,
210000.0
],
"stored_srid": 4326
},
"reproduced": true,
"severity": "critical",
"source": "backend/app/services/vector_feature_service.py:271-299"
},
{
"expected": "Only server-attested source identities can produce authoritative operational coverage.",
"id": "P1-AUTH-001",
"observed": {
"caller_controlled_source_name": "grb",
"coverage_status": "operational",
"reported_authority": "authoritative"
},
"reproduced": true,
"severity": "critical",
"source": "backend/app/api/routes/datasets.py:142-163; backend/app/services/coverage_registry_service.py:463-559"
},
{
"expected": "Validation scope is bound to immutable geometry/source/checksum evidence.",
"id": "P1-AI-001",
"observed": {
"accepted": true,
"area_name": "Mol validation bypass",
"geometry_bounds": [
-75.0,
35.0,
-74.9,
35.1
]
},
"reproduced": true,
"severity": "critical",
"source": "backend/app/services/detection_service.py:223-232"
},
{
"expected": "Renaming an Area cannot change its legal coverage-zone identity.",
"id": "P1-COV-002",
"observed": {
"canonical": {
"outside": false,
"zones": [
"flanders"
]
},
"renamed_same_geometry": {
"outside": true,
"zones": []
}
},
"reproduced": true,
"severity": "high",
"source": "backend/app/services/coverage_registry_service.py:56-65,425-447"
},
{
"expected": "PATCH /areas/{area_id} either validates and applies geometry or rejects the field.",
"id": "P1-API-001",
"observed": {
"geometry_silently_ignored": true,
"parsed_payload": {
"crs": null,
"name": "Renamed"
}
},
"reproduced": true,
"severity": "high",
"source": "backend/app/schemas/area.py:15-17; backend/app/services/area_service.py:154-171"
}
],
"purpose": "Read-only deterministic reproductions of Phase-1 contract violations.",
"schema_version": 1,
"summary": {
"all_reproduced": true,
"reproduced": 7,
"total": 7
}
}
{
"findings": [
{
"expected": "A small buildings partition remains partial; a roads bbox cannot complete buildings coverage.",
"id": "P1-COV-001",
"observed": {
"fully_covered": true,
"matched_dataset_ids": [
"00000000-0000-4000-8000-000000000001"
]
},
"reproduced": true,
"severity": "critical",
"source": "backend/app/services/coverage_registry_service.py:481-505"
},
{
"expected": "A 100 metre buffer is projected to a metric CRS and spans roughly hundreds of metres.",
"id": "P1-CRS-001",
"observed": {
"bounds_epsg4326": [
-95.0,
-49.0,
105.0,
151.0
],
"longitude_span_degrees": 200.0
},
"reproduced": true,
"severity": "critical",
"source": "backend/app/services/vector_operations_service.py:179-203"
},
{
"expected": "Non-WGS84 input is transformed to EPSG:4326 or rejected before persistence.",
"id": "P1-CRS-002",
"observed": {
"stored_coordinates": [
150000.0,
210000.0
],
"stored_srid": 4326
},
"reproduced": true,
"severity": "critical",
"source": "backend/app/services/vector_feature_service.py:271-299"
},
{
"expected": "Only server-attested source identities can produce authoritative operational coverage.",
"id": "P1-AUTH-001",
"observed": {
"caller_controlled_source_name": "grb",
"coverage_status": "operational",
"reported_authority": "authoritative"
},
"reproduced": true,
"severity": "critical",
"source": "backend/app/api/routes/datasets.py:142-163; backend/app/services/coverage_registry_service.py:463-559"
},
{
"expected": "Validation scope is bound to immutable geometry/source/checksum evidence.",
"id": "P1-AI-001",
"observed": {
"accepted": true,
"area_name": "Mol validation bypass",
"geometry_bounds": [
-75.0,
35.0,
-74.9,
35.1
]
},
"reproduced": true,
"severity": "critical",
"source": "backend/app/services/detection_service.py:223-232"
},
{
"expected": "Renaming an Area cannot change its legal coverage-zone identity.",
"id": "P1-COV-002",
"observed": {
"canonical": {
"outside": false,
"zones": [
"flanders"
]
},
"renamed_same_geometry": {
"outside": true,
"zones": []
}
},
"reproduced": true,
"severity": "high",
"source": "backend/app/services/coverage_registry_service.py:56-65,425-447"
},
{
"expected": "PATCH /areas/{area_id} either validates and applies geometry or rejects the field.",
"id": "P1-API-001",
"observed": {
"geometry_silently_ignored": true,
"parsed_payload": {
"crs": null,
"name": "Renamed"
}
},
"reproduced": true,
"severity": "high",
"source": "backend/app/schemas/area.py:15-17; backend/app/services/area_service.py:154-171"
}
],
"purpose": "Read-only deterministic reproductions of Phase-1 contract violations.",
"schema_version": 1,
"summary": {
"all_reproduced": true,
"reproduced": 7,
"total": 7
}
}
@@ -1,31 +1,31 @@
command=npm run build
exit_code=0
captured_at=2026-08-01T18:34:50.3212385+02:00
> geointel-frontend@1.0.0 build
> tsc -b && vite build
vite v7.3.6 building client environment for production...
transforming...
✓ 1896 modules transformed.
rendering chunks...
computing gzip size...
dist/index.html  0.98 kB │ gzip: 0.49 kB
dist/assets/manrope-latin-500-normal-BYYD-dBL.woff2  14.04 kB
dist/assets/manrope-latin-600-normal-4f0koTD-.woff2  14.17 kB
dist/assets/manrope-latin-700-normal-BZp_XxE4.woff2  14.21 kB
dist/assets/public-sans-latin-600-normal-Fru-LXNs.woff2  14.59 kB
dist/assets/public-sans-latin-400-normal-8Rpg0ruU.woff2  14.63 kB
dist/assets/public-sans-latin-500-normal-NlrCPXnF.woff2  14.66 kB
dist/assets/manrope-latin-500-normal-DMZssgOp.woff  18.24 kB
dist/assets/manrope-latin-600-normal-BqgrALkZ.woff  18.38 kB
dist/assets/manrope-latin-700-normal-DGRFkw-m.woff  18.41 kB
dist/assets/public-sans-latin-400-normal-SBbinRkI.woff  18.49 kB
dist/assets/public-sans-latin-500-normal-vCxiVFAq.woff  18.52 kB
dist/assets/public-sans-latin-600-normal-BR59oU-I.woff  18.56 kB
dist/assets/index-BNS8Tp4f.css 426.59 kB │ gzip: 69.40 kB
dist/assets/vendor-CrqJdhs-.js 140.80 kB │ gzip: 45.27 kB
dist/assets/index-DR8RUeAl.js 457.16 kB │ gzip: 119.71 kB
dist/assets/maplibre-DEBTaTl_.js 802.71 kB │ gzip: 217.71 kB
✓ built in 9.80s
command=npm run build
exit_code=0
captured_at=2026-08-01T18:34:50.3212385+02:00
> geointel-frontend@1.0.0 build
> tsc -b && vite build
vite v7.3.6 building client environment for production...
transforming...
✓ 1896 modules transformed.
rendering chunks...
computing gzip size...
dist/index.html  0.98 kB │ gzip: 0.49 kB
dist/assets/manrope-latin-500-normal-BYYD-dBL.woff2  14.04 kB
dist/assets/manrope-latin-600-normal-4f0koTD-.woff2  14.17 kB
dist/assets/manrope-latin-700-normal-BZp_XxE4.woff2  14.21 kB
dist/assets/public-sans-latin-600-normal-Fru-LXNs.woff2  14.59 kB
dist/assets/public-sans-latin-400-normal-8Rpg0ruU.woff2  14.63 kB
dist/assets/public-sans-latin-500-normal-NlrCPXnF.woff2  14.66 kB
dist/assets/manrope-latin-500-normal-DMZssgOp.woff  18.24 kB
dist/assets/manrope-latin-600-normal-BqgrALkZ.woff  18.38 kB
dist/assets/manrope-latin-700-normal-DGRFkw-m.woff  18.41 kB
dist/assets/public-sans-latin-400-normal-SBbinRkI.woff  18.49 kB
dist/assets/public-sans-latin-500-normal-vCxiVFAq.woff  18.52 kB
dist/assets/public-sans-latin-600-normal-BR59oU-I.woff  18.56 kB
dist/assets/index-BNS8Tp4f.css 426.59 kB │ gzip: 69.40 kB
dist/assets/vendor-CrqJdhs-.js 140.80 kB │ gzip: 45.27 kB
dist/assets/index-DR8RUeAl.js 457.16 kB │ gzip: 119.71 kB
dist/assets/maplibre-DEBTaTl_.js 802.71 kB │ gzip: 217.71 kB
✓ built in 9.80s
@@ -1,12 +1,12 @@
command=npm run lint
exit_code=1
captured_at=2026-08-01T18:36:26.6162306+02:00
npm error Missing script: "lint"
npm error
npm error Did you mean this?
npm error npm link # Symlink a package folder
npm error
npm error To see a list of scripts, run:
npm error npm run
npm error A complete log of this run can be found in: C:\Users\Jens\AppData\Local\npm-cache\_logs\2026-08-01T16_36_25_353Z-debug-0.log
command=npm run lint
exit_code=1
captured_at=2026-08-01T18:36:26.6162306+02:00
npm error Missing script: "lint"
npm error
npm error Did you mean this?
npm error npm link # Symlink a package folder
npm error
npm error To see a list of scripts, run:
npm error npm run
npm error A complete log of this run can be found in: C:\Users\Jens\AppData\Local\npm-cache\_logs\2026-08-01T16_36_25_353Z-debug-0.log
@@ -1,8 +1,8 @@
command=npm run typecheck
exit_code=0
captured_at=2026-08-01T18:34:27.3623155+02:00
> geointel-frontend@1.0.0 typecheck
> tsc -p tsconfig.json --noEmit
command=npm run typecheck
exit_code=0
captured_at=2026-08-01T18:34:27.3623155+02:00
> geointel-frontend@1.0.0 typecheck
> tsc -p tsconfig.json --noEmit
@@ -1,35 +1,35 @@
command=npm run test:unit
exit_code=0
captured_at=2026-08-01T18:35:24.4298867+02:00
> geointel-frontend@1.0.0 test:unit
> vitest run
 RUN  v3.2.6 C:/Projects/geointel/frontend
✓ src/lib/datasetCapabilities.test.ts (2 tests) 5ms
✓ src/lib/performanceBudget.test.ts (3 tests) 41ms
✓ src/components/map/mapWorkspaceUtils.test.ts (14 tests) 36ms
✓ src/hooks/useMapThemeSelectionInsights.test.ts (2 tests) 43ms
✓ src/hooks/useCoverageResolver.test.tsx (4 tests) 47ms
✓ src/hooks/useTemporalComparison.test.tsx (3 tests) 36ms
✓ src/components/WorkbenchStatusStrip.test.tsx (2 tests) 151ms
✓ src/hooks/useWorkbenchBootstrap.test.tsx (3 tests) 60ms
✓ src/components/map/LiveAnalysisJourney.test.tsx (3 tests) 59ms
✓ src/components/overview/ProjectAtlasIllustration.test.tsx (2 tests) 267ms
✓ src/components/models/ModelSelector.test.tsx (2 tests) 342ms
✓ src/components/detection/AiPipelineIllustration.test.tsx (1 test) 296ms
✓ src/components/auth/LandingProjectStory.test.tsx (2 tests) 332ms
✓ src/components/map/MunicipalitySearch.test.tsx (2 tests) 483ms
✓ MunicipalitySearch > searches the official municipality catalog and activates a result  468ms
✓ src/components/auth/LandingPage.test.tsx (4 tests) 825ms
✓ LandingPage > presents the professionalised landing page and submits the operator login  471ms
✓ src/lib/bathymetryRaster.test.ts (2 tests) 3ms
 Test Files  16 passed (16)
 Tests  51 passed (51)
 Start at  18:35:16
 Duration  7.37s (transform 2.45s, setup 0ms, collect 14.66s, tests 3.03s, environment 45.46s, prepare 8.07s)
command=npm run test:unit
exit_code=0
captured_at=2026-08-01T18:35:24.4298867+02:00
> geointel-frontend@1.0.0 test:unit
> vitest run
 RUN  v3.2.6 C:/Projects/geointel/frontend
✓ src/lib/datasetCapabilities.test.ts (2 tests) 5ms
✓ src/lib/performanceBudget.test.ts (3 tests) 41ms
✓ src/components/map/mapWorkspaceUtils.test.ts (14 tests) 36ms
✓ src/hooks/useMapThemeSelectionInsights.test.ts (2 tests) 43ms
✓ src/hooks/useCoverageResolver.test.tsx (4 tests) 47ms
✓ src/hooks/useTemporalComparison.test.tsx (3 tests) 36ms
✓ src/components/WorkbenchStatusStrip.test.tsx (2 tests) 151ms
✓ src/hooks/useWorkbenchBootstrap.test.tsx (3 tests) 60ms
✓ src/components/map/LiveAnalysisJourney.test.tsx (3 tests) 59ms
✓ src/components/overview/ProjectAtlasIllustration.test.tsx (2 tests) 267ms
✓ src/components/models/ModelSelector.test.tsx (2 tests) 342ms
✓ src/components/detection/AiPipelineIllustration.test.tsx (1 test) 296ms
✓ src/components/auth/LandingProjectStory.test.tsx (2 tests) 332ms
✓ src/components/map/MunicipalitySearch.test.tsx (2 tests) 483ms
✓ MunicipalitySearch > searches the official municipality catalog and activates a result  468ms
✓ src/components/auth/LandingPage.test.tsx (4 tests) 825ms
✓ LandingPage > presents the professionalised landing page and submits the operator login  471ms
✓ src/lib/bathymetryRaster.test.ts (2 tests) 3ms
 Test Files  16 passed (16)
 Tests  51 passed (51)
 Start at  18:35:16
 Duration  7.37s (transform 2.45s, setup 0ms, collect 14.66s, tests 3.03s, environment 45.46s, prepare 8.07s)
@@ -1,9 +1,9 @@
command=npm test -- --run
exit_code=1
captured_at=2026-08-01T18:34:11.9904224+02:00
npm error Missing script: "test"
npm error
npm error To see a list of scripts, run:
npm error npm run
npm error A complete log of this run can be found in: C:\Users\Jens\AppData\Local\npm-cache\_logs\2026-08-01T16_34_11_785Z-debug-0.log
command=npm test -- --run
exit_code=1
captured_at=2026-08-01T18:34:11.9904224+02:00
npm error Missing script: "test"
npm error
npm error To see a list of scripts, run:
npm error npm run
npm error A complete log of this run can be found in: C:\Users\Jens\AppData\Local\npm-cache\_logs\2026-08-01T16_34_11_785Z-debug-0.log
@@ -1,11 +1,11 @@
{
"schema_version": 1,
"command": "python scripts/run_golden_qa_benchmark.py --json",
"run_1_exit_code": 0,
"run_2_exit_code": 0,
"run_1_sha256": "ec96862b024987b59e56579920361582e718126b07885732335ac1b4d51b61bc",
"run_2_sha256": "4f900711a706dd56dd16b368e261761051f6d52a38bfd421e7d1c5f66ee51e49",
"byte_identical": false,
"semantic_results_equal": true,
"interpretation": "Metric values are stable, but UUID4-backed run identity makes retained JSON byte-nondeterministic."
}
{
"schema_version": 1,
"command": "python scripts/run_golden_qa_benchmark.py --json",
"run_1_exit_code": 0,
"run_2_exit_code": 0,
"run_1_sha256": "ec96862b024987b59e56579920361582e718126b07885732335ac1b4d51b61bc",
"run_2_sha256": "4f900711a706dd56dd16b368e261761051f6d52a38bfd421e7d1c5f66ee51e49",
"byte_identical": false,
"semantic_results_equal": true,
"interpretation": "Metric values are stable, but UUID4-backed run identity makes retained JSON byte-nondeterministic."
}
@@ -1,177 +1,177 @@
{
"benchmark_id": "golden-buildings-partial-match-v1",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings.geojson",
"reference": "fixtures/golden/reference_buildings.geojson"
},
"metrics": {
"f1": 0.5,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": 0.8339768339652592,
"precision": 0.5,
"recall": 0.5
},
"persistence": {
"commit_count": 4,
"metric_count": 24,
"metric_keys": [
"f1",
"false_negative_count",
"false_positive_count",
"mean_iou",
"precision",
"recall"
],
"quality_check_count": 4
},
"scenario_count": 4,
"scenarios": [
{
"benchmark_id": "golden-buildings-partial-match-v1",
"description": "Two reference building polygons and two candidate building polygons: one candidate matches ref-1, one candidate is a false positive, and ref-2 is a false negative.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings.geojson",
"reference": "fixtures/golden/reference_buildings.geojson"
},
"metrics": {
"f1": 0.5,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": 0.8339768339652592,
"precision": 0.5,
"recall": 0.5
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "5fe92da9-2d8d-46a4-9992-2de89e3cf511",
"result_counts": {
"candidate_feature_count": 2,
"matches": 1,
"reference_feature_count": 2
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-perfect-match-v1",
"description": "One candidate building polygon exactly matches one reference polygon.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_perfect.geojson",
"reference": "fixtures/golden/reference_buildings_perfect.geojson"
},
"metrics": {
"f1": 1.0,
"false_negative_count": 0,
"false_positive_count": 0,
"mean_iou": 1.0,
"precision": 1.0,
"recall": 1.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "7b8c1444-31e6-4780-92cb-f2060f4a4048",
"result_counts": {
"candidate_feature_count": 1,
"matches": 1,
"reference_feature_count": 1
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-no-overlap-v1",
"description": "One candidate polygon and one reference polygon do not overlap.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_no_overlap.geojson",
"reference": "fixtures/golden/reference_buildings_no_overlap.geojson"
},
"metrics": {
"f1": null,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": null,
"precision": 0.0,
"recall": 0.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "1ffb1817-b237-4ca8-aad7-ff3312ac7e03",
"result_counts": {
"candidate_feature_count": 1,
"matches": 0,
"reference_feature_count": 1
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-multipolygon-match-v1",
"description": "One candidate MultiPolygon exactly matches one reference MultiPolygon.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_multipolygon.geojson",
"reference": "fixtures/golden/reference_buildings_multipolygon.geojson"
},
"metrics": {
"f1": 1.0,
"false_negative_count": 0,
"false_positive_count": 0,
"mean_iou": 1.0,
"precision": 1.0,
"recall": 1.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "60e6a321-2aaf-467b-9281-f30dd4179333",
"result_counts": {
"candidate_feature_count": 1,
"matches": 1,
"reference_feature_count": 1
},
"status": "passed"
}
],
"status": "passed",
"version": 1
}
{
"benchmark_id": "golden-buildings-partial-match-v1",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings.geojson",
"reference": "fixtures/golden/reference_buildings.geojson"
},
"metrics": {
"f1": 0.5,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": 0.8339768339652592,
"precision": 0.5,
"recall": 0.5
},
"persistence": {
"commit_count": 4,
"metric_count": 24,
"metric_keys": [
"f1",
"false_negative_count",
"false_positive_count",
"mean_iou",
"precision",
"recall"
],
"quality_check_count": 4
},
"scenario_count": 4,
"scenarios": [
{
"benchmark_id": "golden-buildings-partial-match-v1",
"description": "Two reference building polygons and two candidate building polygons: one candidate matches ref-1, one candidate is a false positive, and ref-2 is a false negative.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings.geojson",
"reference": "fixtures/golden/reference_buildings.geojson"
},
"metrics": {
"f1": 0.5,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": 0.8339768339652592,
"precision": 0.5,
"recall": 0.5
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "5fe92da9-2d8d-46a4-9992-2de89e3cf511",
"result_counts": {
"candidate_feature_count": 2,
"matches": 1,
"reference_feature_count": 2
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-perfect-match-v1",
"description": "One candidate building polygon exactly matches one reference polygon.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_perfect.geojson",
"reference": "fixtures/golden/reference_buildings_perfect.geojson"
},
"metrics": {
"f1": 1.0,
"false_negative_count": 0,
"false_positive_count": 0,
"mean_iou": 1.0,
"precision": 1.0,
"recall": 1.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "7b8c1444-31e6-4780-92cb-f2060f4a4048",
"result_counts": {
"candidate_feature_count": 1,
"matches": 1,
"reference_feature_count": 1
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-no-overlap-v1",
"description": "One candidate polygon and one reference polygon do not overlap.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_no_overlap.geojson",
"reference": "fixtures/golden/reference_buildings_no_overlap.geojson"
},
"metrics": {
"f1": null,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": null,
"precision": 0.0,
"recall": 0.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "1ffb1817-b237-4ca8-aad7-ff3312ac7e03",
"result_counts": {
"candidate_feature_count": 1,
"matches": 0,
"reference_feature_count": 1
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-multipolygon-match-v1",
"description": "One candidate MultiPolygon exactly matches one reference MultiPolygon.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_multipolygon.geojson",
"reference": "fixtures/golden/reference_buildings_multipolygon.geojson"
},
"metrics": {
"f1": 1.0,
"false_negative_count": 0,
"false_positive_count": 0,
"mean_iou": 1.0,
"precision": 1.0,
"recall": 1.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "60e6a321-2aaf-467b-9281-f30dd4179333",
"result_counts": {
"candidate_feature_count": 1,
"matches": 1,
"reference_feature_count": 1
},
"status": "passed"
}
],
"status": "passed",
"version": 1
}
@@ -1,177 +1,177 @@
{
"benchmark_id": "golden-buildings-partial-match-v1",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings.geojson",
"reference": "fixtures/golden/reference_buildings.geojson"
},
"metrics": {
"f1": 0.5,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": 0.8339768339652592,
"precision": 0.5,
"recall": 0.5
},
"persistence": {
"commit_count": 4,
"metric_count": 24,
"metric_keys": [
"f1",
"false_negative_count",
"false_positive_count",
"mean_iou",
"precision",
"recall"
],
"quality_check_count": 4
},
"scenario_count": 4,
"scenarios": [
{
"benchmark_id": "golden-buildings-partial-match-v1",
"description": "Two reference building polygons and two candidate building polygons: one candidate matches ref-1, one candidate is a false positive, and ref-2 is a false negative.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings.geojson",
"reference": "fixtures/golden/reference_buildings.geojson"
},
"metrics": {
"f1": 0.5,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": 0.8339768339652592,
"precision": 0.5,
"recall": 0.5
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "8d030591-a701-46ee-ae59-7f529db053d3",
"result_counts": {
"candidate_feature_count": 2,
"matches": 1,
"reference_feature_count": 2
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-perfect-match-v1",
"description": "One candidate building polygon exactly matches one reference polygon.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_perfect.geojson",
"reference": "fixtures/golden/reference_buildings_perfect.geojson"
},
"metrics": {
"f1": 1.0,
"false_negative_count": 0,
"false_positive_count": 0,
"mean_iou": 1.0,
"precision": 1.0,
"recall": 1.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "bc99f243-ee42-40bf-ad71-22da29e5278f",
"result_counts": {
"candidate_feature_count": 1,
"matches": 1,
"reference_feature_count": 1
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-no-overlap-v1",
"description": "One candidate polygon and one reference polygon do not overlap.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_no_overlap.geojson",
"reference": "fixtures/golden/reference_buildings_no_overlap.geojson"
},
"metrics": {
"f1": null,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": null,
"precision": 0.0,
"recall": 0.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "b12249f0-24e3-4bbf-837a-e4a962d1bca9",
"result_counts": {
"candidate_feature_count": 1,
"matches": 0,
"reference_feature_count": 1
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-multipolygon-match-v1",
"description": "One candidate MultiPolygon exactly matches one reference MultiPolygon.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_multipolygon.geojson",
"reference": "fixtures/golden/reference_buildings_multipolygon.geojson"
},
"metrics": {
"f1": 1.0,
"false_negative_count": 0,
"false_positive_count": 0,
"mean_iou": 1.0,
"precision": 1.0,
"recall": 1.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "4dabce04-4c65-4dac-807d-9f9cbaa8c72f",
"result_counts": {
"candidate_feature_count": 1,
"matches": 1,
"reference_feature_count": 1
},
"status": "passed"
}
],
"status": "passed",
"version": 1
}
{
"benchmark_id": "golden-buildings-partial-match-v1",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings.geojson",
"reference": "fixtures/golden/reference_buildings.geojson"
},
"metrics": {
"f1": 0.5,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": 0.8339768339652592,
"precision": 0.5,
"recall": 0.5
},
"persistence": {
"commit_count": 4,
"metric_count": 24,
"metric_keys": [
"f1",
"false_negative_count",
"false_positive_count",
"mean_iou",
"precision",
"recall"
],
"quality_check_count": 4
},
"scenario_count": 4,
"scenarios": [
{
"benchmark_id": "golden-buildings-partial-match-v1",
"description": "Two reference building polygons and two candidate building polygons: one candidate matches ref-1, one candidate is a false positive, and ref-2 is a false negative.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings.geojson",
"reference": "fixtures/golden/reference_buildings.geojson"
},
"metrics": {
"f1": 0.5,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": 0.8339768339652592,
"precision": 0.5,
"recall": 0.5
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "8d030591-a701-46ee-ae59-7f529db053d3",
"result_counts": {
"candidate_feature_count": 2,
"matches": 1,
"reference_feature_count": 2
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-perfect-match-v1",
"description": "One candidate building polygon exactly matches one reference polygon.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_perfect.geojson",
"reference": "fixtures/golden/reference_buildings_perfect.geojson"
},
"metrics": {
"f1": 1.0,
"false_negative_count": 0,
"false_positive_count": 0,
"mean_iou": 1.0,
"precision": 1.0,
"recall": 1.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "bc99f243-ee42-40bf-ad71-22da29e5278f",
"result_counts": {
"candidate_feature_count": 1,
"matches": 1,
"reference_feature_count": 1
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-no-overlap-v1",
"description": "One candidate polygon and one reference polygon do not overlap.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_no_overlap.geojson",
"reference": "fixtures/golden/reference_buildings_no_overlap.geojson"
},
"metrics": {
"f1": null,
"false_negative_count": 1,
"false_positive_count": 1,
"mean_iou": null,
"precision": 0.0,
"recall": 0.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "b12249f0-24e3-4bbf-837a-e4a962d1bca9",
"result_counts": {
"candidate_feature_count": 1,
"matches": 0,
"reference_feature_count": 1
},
"status": "passed"
},
{
"benchmark_id": "golden-buildings-multipolygon-match-v1",
"description": "One candidate MultiPolygon exactly matches one reference MultiPolygon.",
"fixtures": {
"candidate": "fixtures/golden/predicted_buildings_multipolygon.geojson",
"reference": "fixtures/golden/reference_buildings_multipolygon.geojson"
},
"metrics": {
"f1": 1.0,
"false_negative_count": 0,
"false_positive_count": 0,
"mean_iou": 1.0,
"precision": 1.0,
"recall": 1.0
},
"persistence": {
"commit_count": 1,
"metric_count": 6,
"metric_keys": [
"precision",
"recall",
"f1",
"mean_iou",
"false_positive_count",
"false_negative_count"
],
"quality_check_count": 1
},
"quality_check_id": "4dabce04-4c65-4dac-807d-9f9cbaa8c72f",
"result_counts": {
"candidate_feature_count": 1,
"matches": 1,
"reference_feature_count": 1
},
"status": "passed"
}
],
"status": "passed",
"version": 1
}
File diff suppressed because it is too large Load Diff
@@ -1,5 +1,5 @@
command=python scripts/audit_api_contracts.py
exit_code=0
captured_at=2026-08-01T18:37:24.4984309+02:00
API contract audit OK: 147 implemented routes match docs; 10 explicit non-envelope endpoints tracked.
command=python scripts/audit_api_contracts.py
exit_code=0
captured_at=2026-08-01T18:37:24.4984309+02:00
API contract audit OK: 147 implemented routes match docs; 10 explicit non-envelope endpoints tracked.
@@ -1,36 +1,36 @@
{
"baseline_scope": [
"tracked repository state",
"static code/test/migration inventory",
"tracked mirror comparison",
"local artifact inventory",
"mock/fixture/placeholder/fallback triage signals"
],
"finding_count": 2,
"findings": [
{
"evidence": {
"paired_different_file_count": 68,
"tracked_mirror_file_count": 1153
},
"id": "P1-REPO-001",
"severity": "high",
"title": "Tracked nested repository mirror creates ambiguous source state"
},
{
"id": "P1-ML-LOCAL-001",
"interpretation": "Production model truth must be verified on the mounted Tower volume.",
"severity": "info",
"title": "No local checkpoint is available in the repository checkout"
}
],
"generated_at": "2026-08-01T15:53:53.482303+00:00",
"schema_version": 1,
"separate_required_evidence": [
"Tower database/storage audit",
"Tower CUDA/model preflight and representative inference",
"corpus leakage/duplicate/label/time review",
"independent human visual review"
],
"status": "findings_present"
}
{
"baseline_scope": [
"tracked repository state",
"static code/test/migration inventory",
"tracked mirror comparison",
"local artifact inventory",
"mock/fixture/placeholder/fallback triage signals"
],
"finding_count": 2,
"findings": [
{
"evidence": {
"paired_different_file_count": 68,
"tracked_mirror_file_count": 1153
},
"id": "P1-REPO-001",
"severity": "high",
"title": "Tracked nested repository mirror creates ambiguous source state"
},
{
"id": "P1-ML-LOCAL-001",
"interpretation": "Production model truth must be verified on the mounted Tower volume.",
"severity": "info",
"title": "No local checkpoint is available in the repository checkout"
}
],
"generated_at": "2026-08-01T15:53:53.482303+00:00",
"schema_version": 1,
"separate_required_evidence": [
"Tower database/storage audit",
"Tower CUDA/model preflight and representative inference",
"corpus leakage/duplicate/label/time review",
"independent human visual review"
],
"status": "findings_present"
}
@@ -1,6 +1,6 @@
command=python -m pytest tests/test_accuracy_phase1_baseline.py -q -p no:cacheprovider
exit_code=0
captured_at=2026-08-01T18:33:32.0526074+02:00
.... [100%]
4 passed in 1.24s
command=python -m pytest tests/test_accuracy_phase1_baseline.py -q -p no:cacheprovider
exit_code=0
captured_at=2026-08-01T18:33:32.0526074+02:00
.... [100%]
4 passed in 1.24s
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,215 +1,215 @@
{
"captured_at": "2026-08-01T18:13:54.6553+02:00",
"claim_boundary": "One production-adapter inference completed on one existing tile. No accuracy, calibration, geographic-generalization, or release claim follows from this smoke.",
"configuration": {
"confidence": 0.5,
"deterministic_algorithms": true,
"device": "cuda:0",
"image_size": 640,
"max_detections": 1000,
"seed": 20260801
},
"input": {
"manifest_path": "/app/storage/tiles/cb80638d-dbef-48ac-b19c-cec7c3efc96e/ae0ff76d-70c0-404f-b777-54d14517179a/b191c968-7d56-4e0d-afbb-8b5baaa62470/manifest.json",
"manifest_sha256": "6ab8a96bf2a1405e224932afb90255311a09bbeaed4e9a2fdcdf8b1bc2230abd",
"raster": {
"available": true,
"bounds": [
193277.53584918313,
205708.27443503588,
193777.53584918313,
206208.27443503588
],
"count": 3,
"crs": "EPSG:31370",
"dtypes": [
"uint8",
"uint8",
"uint8"
],
"height": 512,
"nodata": null,
"transform": [
0.9765625,
0.0,
193277.53584918313,
0.0,
-0.9765625,
206208.27443503588,
0.0,
0.0,
1.0
],
"width": 512
},
"tile_path": "/app/storage/tiles/cb80638d-dbef-48ac-b19c-cec7c3efc96e/ae0ff76d-70c0-404f-b777-54d14517179a/b191c968-7d56-4e0d-afbb-8b5baaa62470/tile_0000.tif",
"tile_sha256": "134a9e86850c92c577c73bc6ee57a9df7d4c1c513ae6450263e800b6dd47b6ee",
"tile_size_bytes": 669227
},
"model": {
"path": "/app/models/geointel-building-yolov8s-smallbld-minpx3-img640-ft30.pt",
"sha256": "a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1",
"size_bytes": 22516074
},
"output": {
"class_counts": {
"building": 17
},
"confidence": {
"maximum": 0.8144345879554749,
"mean": 0.5594814244438621,
"minimum": 0.5008771419525146
},
"count": 17,
"sample": [
{
"bbox": [
125.5418930053711,
157.9995880126953,
187.2771453857422,
232.72903442382812
],
"class_name": "building",
"confidence": 0.8144345879554749,
"properties": {
"class_id": 0
}
},
{
"bbox": [
38.20725631713867,
487.8446350097656,
56.458614349365234,
510.8298034667969
],
"class_name": "building",
"confidence": 0.6531882286071777,
"properties": {
"class_id": 0
}
},
{
"bbox": [
177.36990356445312,
229.9929656982422,
248.5861053466797,
267.96173095703125
],
"class_name": "building",
"confidence": 0.6213690638542175,
"properties": {
"class_id": 0
}
},
{
"bbox": [
367.4935607910156,
474.3263244628906,
407.673828125,
498.2358093261719
],
"class_name": "building",
"confidence": 0.6148342490196228,
"properties": {
"class_id": 0
}
},
{
"bbox": [
435.2783203125,
131.2145233154297,
453.61016845703125,
166.76919555664062
],
"class_name": "building",
"confidence": 0.5637134313583374,
"properties": {
"class_id": 0
}
},
{
"bbox": [
407.32525634765625,
317.380126953125,
416.885009765625,
326.8919982910156
],
"class_name": "building",
"confidence": 0.547556459903717,
"properties": {
"class_id": 0
}
},
{
"bbox": [
395.66558837890625,
356.8952331542969,
413.51416015625,
377.1672668457031
],
"class_name": "building",
"confidence": 0.5378748774528503,
"properties": {
"class_id": 0
}
},
{
"bbox": [
394.0309143066406,
143.1604461669922,
408.4023132324219,
167.8805389404297
],
"class_name": "building",
"confidence": 0.5360639095306396,
"properties": {
"class_id": 0
}
},
{
"bbox": [
125.3250503540039,
56.1500358581543,
157.87998962402344,
68.70291900634766
],
"class_name": "building",
"confidence": 0.5342658162117004,
"properties": {
"class_id": 0
}
},
{
"bbox": [
213.7998504638672,
77.86518859863281,
230.8061065673828,
90.1888198852539
],
"class_name": "building",
"confidence": 0.5319290161132812,
"properties": {
"class_id": 0
}
}
]
},
"read_only": true,
"runtime": {
"cuda_available": true,
"cuda_device_index": 0,
"cuda_device_name": "NVIDIA GeForce RTX 4080 SUPER",
"cuda_peak_memory_bytes": 82307072,
"cuda_runtime": "12.8",
"python": "3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]",
"torch": "2.11.0+cu128",
"ultralytics": "8.4.99"
},
"schema_version": 1,
"status": "passed",
"timing_seconds": {
"inference": 0.8836944859940559,
"model_load": 0.48524460900807753,
"total": 1.3689390950021334
}
}
{
"captured_at": "2026-08-01T18:13:54.6553+02:00",
"claim_boundary": "One production-adapter inference completed on one existing tile. No accuracy, calibration, geographic-generalization, or release claim follows from this smoke.",
"configuration": {
"confidence": 0.5,
"deterministic_algorithms": true,
"device": "cuda:0",
"image_size": 640,
"max_detections": 1000,
"seed": 20260801
},
"input": {
"manifest_path": "/app/storage/tiles/cb80638d-dbef-48ac-b19c-cec7c3efc96e/ae0ff76d-70c0-404f-b777-54d14517179a/b191c968-7d56-4e0d-afbb-8b5baaa62470/manifest.json",
"manifest_sha256": "6ab8a96bf2a1405e224932afb90255311a09bbeaed4e9a2fdcdf8b1bc2230abd",
"raster": {
"available": true,
"bounds": [
193277.53584918313,
205708.27443503588,
193777.53584918313,
206208.27443503588
],
"count": 3,
"crs": "EPSG:31370",
"dtypes": [
"uint8",
"uint8",
"uint8"
],
"height": 512,
"nodata": null,
"transform": [
0.9765625,
0.0,
193277.53584918313,
0.0,
-0.9765625,
206208.27443503588,
0.0,
0.0,
1.0
],
"width": 512
},
"tile_path": "/app/storage/tiles/cb80638d-dbef-48ac-b19c-cec7c3efc96e/ae0ff76d-70c0-404f-b777-54d14517179a/b191c968-7d56-4e0d-afbb-8b5baaa62470/tile_0000.tif",
"tile_sha256": "134a9e86850c92c577c73bc6ee57a9df7d4c1c513ae6450263e800b6dd47b6ee",
"tile_size_bytes": 669227
},
"model": {
"path": "/app/models/geointel-building-yolov8s-smallbld-minpx3-img640-ft30.pt",
"sha256": "a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1",
"size_bytes": 22516074
},
"output": {
"class_counts": {
"building": 17
},
"confidence": {
"maximum": 0.8144345879554749,
"mean": 0.5594814244438621,
"minimum": 0.5008771419525146
},
"count": 17,
"sample": [
{
"bbox": [
125.5418930053711,
157.9995880126953,
187.2771453857422,
232.72903442382812
],
"class_name": "building",
"confidence": 0.8144345879554749,
"properties": {
"class_id": 0
}
},
{
"bbox": [
38.20725631713867,
487.8446350097656,
56.458614349365234,
510.8298034667969
],
"class_name": "building",
"confidence": 0.6531882286071777,
"properties": {
"class_id": 0
}
},
{
"bbox": [
177.36990356445312,
229.9929656982422,
248.5861053466797,
267.96173095703125
],
"class_name": "building",
"confidence": 0.6213690638542175,
"properties": {
"class_id": 0
}
},
{
"bbox": [
367.4935607910156,
474.3263244628906,
407.673828125,
498.2358093261719
],
"class_name": "building",
"confidence": 0.6148342490196228,
"properties": {
"class_id": 0
}
},
{
"bbox": [
435.2783203125,
131.2145233154297,
453.61016845703125,
166.76919555664062
],
"class_name": "building",
"confidence": 0.5637134313583374,
"properties": {
"class_id": 0
}
},
{
"bbox": [
407.32525634765625,
317.380126953125,
416.885009765625,
326.8919982910156
],
"class_name": "building",
"confidence": 0.547556459903717,
"properties": {
"class_id": 0
}
},
{
"bbox": [
395.66558837890625,
356.8952331542969,
413.51416015625,
377.1672668457031
],
"class_name": "building",
"confidence": 0.5378748774528503,
"properties": {
"class_id": 0
}
},
{
"bbox": [
394.0309143066406,
143.1604461669922,
408.4023132324219,
167.8805389404297
],
"class_name": "building",
"confidence": 0.5360639095306396,
"properties": {
"class_id": 0
}
},
{
"bbox": [
125.3250503540039,
56.1500358581543,
157.87998962402344,
68.70291900634766
],
"class_name": "building",
"confidence": 0.5342658162117004,
"properties": {
"class_id": 0
}
},
{
"bbox": [
213.7998504638672,
77.86518859863281,
230.8061065673828,
90.1888198852539
],
"class_name": "building",
"confidence": 0.5319290161132812,
"properties": {
"class_id": 0
}
}
]
},
"read_only": true,
"runtime": {
"cuda_available": true,
"cuda_device_index": 0,
"cuda_device_name": "NVIDIA GeForce RTX 4080 SUPER",
"cuda_peak_memory_bytes": 82307072,
"cuda_runtime": "12.8",
"python": "3.11.2 (main, May 12 2026, 05:17:27) [GCC 12.2.0]",
"torch": "2.11.0+cu128",
"ultralytics": "8.4.99"
},
"schema_version": 1,
"status": "passed",
"timing_seconds": {
"inference": 0.8836944859940559,
"model_load": 0.48524460900807753,
"total": 1.3689390950021334
}
}
@@ -1,25 +1,25 @@
{
"schema_version": 1,
"captured_at": "2026-08-01T18:46:19.288288+02:00",
"read_only": true,
"artifacts": [
{
"path": "/app/storage/training/building-be-v62-v58-flanders-balanced-transfer-r1/runs/flanders/weights/best.pt",
"exists": true,
"size_bytes": 456136473,
"sha256": "889ee5b3bfe722803542d15a53a51a716872cf0e8516da5e8291e0a2605adbdb"
},
{
"path": "/app/storage/training/building-be-v62-v58-flanders-balanced-transfer-r1/runs/flanders/weights/last.pt",
"exists": true,
"size_bytes": 456136985,
"sha256": "08d12061f017c45c123c824ffa043bc07794beef251c903299eb1e0954636c8b"
},
{
"path": "/app/storage/training/building-be-v56-rotated-quality-audit-r1/operator_yolo_dataset_quality_audit.json",
"exists": true,
"size_bytes": 153659,
"sha256": "da0d4648ee2365ab949f1b00518ddba0a17cb722a41cb228525b4d2e7657ce36"
}
]
}
{
"schema_version": 1,
"captured_at": "2026-08-01T18:46:19.288288+02:00",
"read_only": true,
"artifacts": [
{
"path": "/app/storage/training/building-be-v62-v58-flanders-balanced-transfer-r1/runs/flanders/weights/best.pt",
"exists": true,
"size_bytes": 456136473,
"sha256": "889ee5b3bfe722803542d15a53a51a716872cf0e8516da5e8291e0a2605adbdb"
},
{
"path": "/app/storage/training/building-be-v62-v58-flanders-balanced-transfer-r1/runs/flanders/weights/last.pt",
"exists": true,
"size_bytes": 456136985,
"sha256": "08d12061f017c45c123c824ffa043bc07794beef251c903299eb1e0954636c8b"
},
{
"path": "/app/storage/training/building-be-v56-rotated-quality-audit-r1/operator_yolo_dataset_quality_audit.json",
"exists": true,
"size_bytes": 153659,
"sha256": "da0d4648ee2365ab949f1b00518ddba0a17cb722a41cb228525b4d2e7657ce36"
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,397 +1,397 @@
{
"active_model": {
"classes": "building",
"configured_path": "/app/models/geointel-building-yolov8s-smallbld-minpx3-img640-ft30.pt",
"device": "cuda:0",
"exists": true,
"model_id": "yolo-configured",
"model_version": "",
"require_cuda": "true",
"sha256": "a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1",
"size_bytes": 22516074,
"validated_area_names": "Mol,Kempen",
"validation_scope_enforced": "true"
},
"database": {
"analysis_statuses": [
{
"count": 2,
"status": "failed"
},
{
"count": 1144,
"status": "success"
}
],
"confidence_integrity": [
{
"detections_outside_unit_interval": 0,
"segmentations_outside_unit_interval": 0
}
],
"dataset_lineage_gaps": [
{
"missing_checksum": 0,
"missing_crs": 0,
"missing_imported_at": 0,
"missing_observed_at": 2377,
"missing_provenance_metadata": 0,
"missing_source_metadata": 0,
"missing_source_version": 1761,
"total": 3377
}
],
"dataset_statuses": [
{
"count": 3377,
"status": "ready"
}
],
"dataset_version_gaps": [
{
"missing_checksum": 0,
"missing_provenance_metadata": 0,
"missing_source_metadata": 0,
"missing_storage_path": 0,
"total": 1671
}
],
"geometry_integrity": {
"areas": {
"rows": [
{
"empty": 0,
"invalid": 0,
"outside_epsg4326_domain": 0,
"populated": 387,
"wrong_srid": 0
}
],
"status": "ok"
},
"detections": {
"rows": [
{
"empty": 0,
"invalid": 0,
"outside_epsg4326_domain": 4,
"populated": 299233,
"wrong_srid": 0
}
],
"status": "ok"
},
"segmentations": {
"rows": [
{
"empty": 0,
"invalid": 0,
"outside_epsg4326_domain": 0,
"populated": 0,
"wrong_srid": 0
}
],
"status": "ok"
},
"vector_features": {
"rows": [
{
"empty": 0,
"invalid": 0,
"outside_epsg4326_domain": 0,
"populated": 6689447,
"wrong_srid": 0
}
],
"status": "ok"
}
},
"job_statuses": [
{
"count": 135,
"status": "failed"
},
{
"count": 4325,
"status": "success"
}
],
"metric_nulls": [
{
"metric_key": "f1",
"null_values": 58,
"total": 697
},
{
"metric_key": "false_negative_count",
"null_values": 0,
"total": 697
},
{
"metric_key": "false_positive_count",
"null_values": 0,
"total": 697
},
{
"metric_key": "mean_iou",
"null_values": 90,
"total": 697
},
{
"metric_key": "precision",
"null_values": 58,
"total": 697
},
{
"metric_key": "recall",
"null_values": 1,
"total": 697
}
],
"migration_heads": [
"202607260001"
],
"model_run_summary": [
{
"analysis_type": "detection",
"count": 1144,
"model_name": "yolo-configured",
"model_version": "",
"status": "success"
},
{
"analysis_type": "detection",
"count": 2,
"model_name": "yolo-configured",
"model_version": "",
"status": "failed"
}
],
"postgis_version": "POSTGIS=\"3.6.4 94d984b\" [EXTENSION] PGSQL=\"160\" GEOS=\"3.11.1-CAPI-1.17.1\" PROJ=\"9.1.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/tmp/proj DATABASE_PATH=/usr/share/proj/proj.db\" LIBXML=\"2.9.14\" LIBJSON=\"0.16\" LIBPROTOBUF=\"1.4.1\" WAGYU=\"0.5.0 (Internal)\" (core procs from \"3.4.3 e365945\" need upgrade) TOPOLOGY (topology procs from \"3.4.3 e365945\" need upgrade)",
"source_summary": [
{
"count": 1751,
"reference_count": 660,
"source_name": "manual",
"status": "ready"
},
{
"count": 339,
"reference_count": 0,
"source_name": "vmm_flood_hazard",
"status": "ready"
},
{
"count": 273,
"reference_count": 273,
"source_name": "vmm_vha_bathymetry_profiles",
"status": "ready"
},
{
"count": 210,
"reference_count": 0,
"source_name": "department_omgeving_thematic_raster",
"status": "ready"
},
{
"count": 179,
"reference_count": 179,
"source_name": "grb",
"status": "ready"
},
{
"count": 168,
"reference_count": 0,
"source_name": "digitaal_vlaanderen_orthophoto",
"status": "ready"
},
{
"count": 107,
"reference_count": 0,
"source_name": "spw_orthophoto",
"status": "ready"
},
{
"count": 68,
"reference_count": 68,
"source_name": "spw_picc",
"status": "ready"
},
{
"count": 60,
"reference_count": 0,
"source_name": "digitaal_vlaanderen_dhmv",
"status": "ready"
},
{
"count": 36,
"reference_count": 36,
"source_name": "urbis",
"status": "ready"
},
{
"count": 26,
"reference_count": 0,
"source_name": "urbis_orthophoto",
"status": "ready"
},
{
"count": 26,
"reference_count": 26,
"source_name": "waterinfo",
"status": "ready"
},
{
"count": 25,
"reference_count": 25,
"source_name": "department_omgeving_land_use",
"status": "ready"
},
{
"count": 21,
"reference_count": 21,
"source_name": "historical_landuse",
"status": "ready"
},
{
"count": 18,
"reference_count": 18,
"source_name": "agentschap_landbouw_zeevisserij_agricultural_parcels",
"status": "ready"
},
{
"count": 15,
"reference_count": 15,
"source_name": "statbel",
"status": "ready"
},
{
"count": 13,
"reference_count": 13,
"source_name": "dov_soil_map",
"status": "ready"
},
{
"count": 12,
"reference_count": 12,
"source_name": "inbo_bwk_natura2000",
"status": "ready"
},
{
"count": 7,
"reference_count": 0,
"source_name": "spw_walous_land_cover",
"status": "ready"
},
{
"count": 6,
"reference_count": 0,
"source_name": "vrbg",
"status": "ready"
},
{
"count": 5,
"reference_count": 1,
"source_name": "fixture",
"status": "ready"
},
{
"count": 4,
"reference_count": 4,
"source_name": "ngi_adminvector",
"status": "ready"
},
{
"count": 3,
"reference_count": 0,
"source_name": "map_selection",
"status": "ready"
},
{
"count": 1,
"reference_count": 1,
"source_name": "digitaal_vlaanderen_buildings_addresses_register",
"status": "ready"
},
{
"count": 1,
"reference_count": 1,
"source_name": "rbins_marine_reporting_units",
"status": "ready"
},
{
"count": 1,
"reference_count": 1,
"source_name": "rbins_msp_2026",
"status": "ready"
},
{
"count": 1,
"reference_count": 0,
"source_name": "spw_bathymetry",
"status": "ready"
},
{
"count": 1,
"reference_count": 0,
"source_name": "spw_terrain",
"status": "ready"
}
],
"table_counts": {
"analysis_runs": 1146,
"aoi_operation_partitions": 61,
"aoi_operations": 4,
"areas": 387,
"dataset_versions": 1671,
"datasets": 3377,
"detection_reviews": 0,
"detections": 299233,
"exports": 768,
"jobs": 4460,
"metrics": 4182,
"projects": 1097,
"quality_checks": 697,
"segmentations": 0,
"vector_features": 6689447
},
"version": "PostgreSQL 16.14 (Debian 16.14-1.pgdg12+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit"
},
"generated_at": "2026-08-01T16:03:11.003029+00:00",
"mode": "read_only",
"runtime": {
"cuda": {
"available": true,
"device_count": 1,
"device_names": [
"NVIDIA GeForce RTX 4080 SUPER"
],
"runtime_version": "12.8"
},
"packages": {
"fastapi": "0.139.2",
"geoalchemy2": "0.20.0",
"geointel-backend": "0.1.0",
"geopandas": "1.1.4",
"pyproj": "3.7.2",
"rasterio": "1.4.4",
"shapely": "2.1.2",
"sqlalchemy": "2.0.51",
"torch": "2.11.0+cu128",
"torchvision": "0.26.0+cu128",
"ultralytics": "8.4.99"
},
"platform": "Linux-6.12.54-Unraid-x86_64-with-glibc2.36",
"python": "3.11.2"
},
"schema_version": 1,
"statement_timeout_ms": 30000,
"storage_references": {
"checked_count": 5816,
"missing_count": 0,
"missing_records": [],
"records_truncated": false,
"scope": "direct datasets, dataset_versions and exports storage_path columns"
},
"storage_root": "/app/storage"
}
{
"active_model": {
"classes": "building",
"configured_path": "/app/models/geointel-building-yolov8s-smallbld-minpx3-img640-ft30.pt",
"device": "cuda:0",
"exists": true,
"model_id": "yolo-configured",
"model_version": "",
"require_cuda": "true",
"sha256": "a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1",
"size_bytes": 22516074,
"validated_area_names": "Mol,Kempen",
"validation_scope_enforced": "true"
},
"database": {
"analysis_statuses": [
{
"count": 2,
"status": "failed"
},
{
"count": 1144,
"status": "success"
}
],
"confidence_integrity": [
{
"detections_outside_unit_interval": 0,
"segmentations_outside_unit_interval": 0
}
],
"dataset_lineage_gaps": [
{
"missing_checksum": 0,
"missing_crs": 0,
"missing_imported_at": 0,
"missing_observed_at": 2377,
"missing_provenance_metadata": 0,
"missing_source_metadata": 0,
"missing_source_version": 1761,
"total": 3377
}
],
"dataset_statuses": [
{
"count": 3377,
"status": "ready"
}
],
"dataset_version_gaps": [
{
"missing_checksum": 0,
"missing_provenance_metadata": 0,
"missing_source_metadata": 0,
"missing_storage_path": 0,
"total": 1671
}
],
"geometry_integrity": {
"areas": {
"rows": [
{
"empty": 0,
"invalid": 0,
"outside_epsg4326_domain": 0,
"populated": 387,
"wrong_srid": 0
}
],
"status": "ok"
},
"detections": {
"rows": [
{
"empty": 0,
"invalid": 0,
"outside_epsg4326_domain": 4,
"populated": 299233,
"wrong_srid": 0
}
],
"status": "ok"
},
"segmentations": {
"rows": [
{
"empty": 0,
"invalid": 0,
"outside_epsg4326_domain": 0,
"populated": 0,
"wrong_srid": 0
}
],
"status": "ok"
},
"vector_features": {
"rows": [
{
"empty": 0,
"invalid": 0,
"outside_epsg4326_domain": 0,
"populated": 6689447,
"wrong_srid": 0
}
],
"status": "ok"
}
},
"job_statuses": [
{
"count": 135,
"status": "failed"
},
{
"count": 4325,
"status": "success"
}
],
"metric_nulls": [
{
"metric_key": "f1",
"null_values": 58,
"total": 697
},
{
"metric_key": "false_negative_count",
"null_values": 0,
"total": 697
},
{
"metric_key": "false_positive_count",
"null_values": 0,
"total": 697
},
{
"metric_key": "mean_iou",
"null_values": 90,
"total": 697
},
{
"metric_key": "precision",
"null_values": 58,
"total": 697
},
{
"metric_key": "recall",
"null_values": 1,
"total": 697
}
],
"migration_heads": [
"202607260001"
],
"model_run_summary": [
{
"analysis_type": "detection",
"count": 1144,
"model_name": "yolo-configured",
"model_version": "",
"status": "success"
},
{
"analysis_type": "detection",
"count": 2,
"model_name": "yolo-configured",
"model_version": "",
"status": "failed"
}
],
"postgis_version": "POSTGIS=\"3.6.4 94d984b\" [EXTENSION] PGSQL=\"160\" GEOS=\"3.11.1-CAPI-1.17.1\" PROJ=\"9.1.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/tmp/proj DATABASE_PATH=/usr/share/proj/proj.db\" LIBXML=\"2.9.14\" LIBJSON=\"0.16\" LIBPROTOBUF=\"1.4.1\" WAGYU=\"0.5.0 (Internal)\" (core procs from \"3.4.3 e365945\" need upgrade) TOPOLOGY (topology procs from \"3.4.3 e365945\" need upgrade)",
"source_summary": [
{
"count": 1751,
"reference_count": 660,
"source_name": "manual",
"status": "ready"
},
{
"count": 339,
"reference_count": 0,
"source_name": "vmm_flood_hazard",
"status": "ready"
},
{
"count": 273,
"reference_count": 273,
"source_name": "vmm_vha_bathymetry_profiles",
"status": "ready"
},
{
"count": 210,
"reference_count": 0,
"source_name": "department_omgeving_thematic_raster",
"status": "ready"
},
{
"count": 179,
"reference_count": 179,
"source_name": "grb",
"status": "ready"
},
{
"count": 168,
"reference_count": 0,
"source_name": "digitaal_vlaanderen_orthophoto",
"status": "ready"
},
{
"count": 107,
"reference_count": 0,
"source_name": "spw_orthophoto",
"status": "ready"
},
{
"count": 68,
"reference_count": 68,
"source_name": "spw_picc",
"status": "ready"
},
{
"count": 60,
"reference_count": 0,
"source_name": "digitaal_vlaanderen_dhmv",
"status": "ready"
},
{
"count": 36,
"reference_count": 36,
"source_name": "urbis",
"status": "ready"
},
{
"count": 26,
"reference_count": 0,
"source_name": "urbis_orthophoto",
"status": "ready"
},
{
"count": 26,
"reference_count": 26,
"source_name": "waterinfo",
"status": "ready"
},
{
"count": 25,
"reference_count": 25,
"source_name": "department_omgeving_land_use",
"status": "ready"
},
{
"count": 21,
"reference_count": 21,
"source_name": "historical_landuse",
"status": "ready"
},
{
"count": 18,
"reference_count": 18,
"source_name": "agentschap_landbouw_zeevisserij_agricultural_parcels",
"status": "ready"
},
{
"count": 15,
"reference_count": 15,
"source_name": "statbel",
"status": "ready"
},
{
"count": 13,
"reference_count": 13,
"source_name": "dov_soil_map",
"status": "ready"
},
{
"count": 12,
"reference_count": 12,
"source_name": "inbo_bwk_natura2000",
"status": "ready"
},
{
"count": 7,
"reference_count": 0,
"source_name": "spw_walous_land_cover",
"status": "ready"
},
{
"count": 6,
"reference_count": 0,
"source_name": "vrbg",
"status": "ready"
},
{
"count": 5,
"reference_count": 1,
"source_name": "fixture",
"status": "ready"
},
{
"count": 4,
"reference_count": 4,
"source_name": "ngi_adminvector",
"status": "ready"
},
{
"count": 3,
"reference_count": 0,
"source_name": "map_selection",
"status": "ready"
},
{
"count": 1,
"reference_count": 1,
"source_name": "digitaal_vlaanderen_buildings_addresses_register",
"status": "ready"
},
{
"count": 1,
"reference_count": 1,
"source_name": "rbins_marine_reporting_units",
"status": "ready"
},
{
"count": 1,
"reference_count": 1,
"source_name": "rbins_msp_2026",
"status": "ready"
},
{
"count": 1,
"reference_count": 0,
"source_name": "spw_bathymetry",
"status": "ready"
},
{
"count": 1,
"reference_count": 0,
"source_name": "spw_terrain",
"status": "ready"
}
],
"table_counts": {
"analysis_runs": 1146,
"aoi_operation_partitions": 61,
"aoi_operations": 4,
"areas": 387,
"dataset_versions": 1671,
"datasets": 3377,
"detection_reviews": 0,
"detections": 299233,
"exports": 768,
"jobs": 4460,
"metrics": 4182,
"projects": 1097,
"quality_checks": 697,
"segmentations": 0,
"vector_features": 6689447
},
"version": "PostgreSQL 16.14 (Debian 16.14-1.pgdg12+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit"
},
"generated_at": "2026-08-01T16:03:11.003029+00:00",
"mode": "read_only",
"runtime": {
"cuda": {
"available": true,
"device_count": 1,
"device_names": [
"NVIDIA GeForce RTX 4080 SUPER"
],
"runtime_version": "12.8"
},
"packages": {
"fastapi": "0.139.2",
"geoalchemy2": "0.20.0",
"geointel-backend": "0.1.0",
"geopandas": "1.1.4",
"pyproj": "3.7.2",
"rasterio": "1.4.4",
"shapely": "2.1.2",
"sqlalchemy": "2.0.51",
"torch": "2.11.0+cu128",
"torchvision": "0.26.0+cu128",
"ultralytics": "8.4.99"
},
"platform": "Linux-6.12.54-Unraid-x86_64-with-glibc2.36",
"python": "3.11.2"
},
"schema_version": 1,
"statement_timeout_ms": 30000,
"storage_references": {
"checked_count": 5816,
"missing_count": 0,
"missing_records": [],
"records_truncated": false,
"scope": "direct datasets, dataset_versions and exports storage_path columns"
},
"storage_root": "/app/storage"
}