audit: seal accuracy phase 1 evidence
This commit is contained in:
+3
-2
@@ -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
|
||||
|
||||
[36mvite v7.3.6 [32mbuilding client environment for production...[36m[39m
|
||||
transforming...
|
||||
[32m✓[39m 1896 modules transformed.
|
||||
rendering chunks...
|
||||
computing gzip size...
|
||||
[2mdist/[22m[32mindex.html [39m[1m[2m 0.98 kB[22m[1m[22m[2m │ gzip: 0.49 kB[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-500-normal-BYYD-dBL.woff2 [39m[1m[2m 14.04 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-600-normal-4f0koTD-.woff2 [39m[1m[2m 14.17 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-700-normal-BZp_XxE4.woff2 [39m[1m[2m 14.21 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-600-normal-Fru-LXNs.woff2 [39m[1m[2m 14.59 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-400-normal-8Rpg0ruU.woff2 [39m[1m[2m 14.63 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-500-normal-NlrCPXnF.woff2 [39m[1m[2m 14.66 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-500-normal-DMZssgOp.woff [39m[1m[2m 18.24 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-600-normal-BqgrALkZ.woff [39m[1m[2m 18.38 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-700-normal-DGRFkw-m.woff [39m[1m[2m 18.41 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-400-normal-SBbinRkI.woff [39m[1m[2m 18.49 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-500-normal-vCxiVFAq.woff [39m[1m[2m 18.52 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-600-normal-BR59oU-I.woff [39m[1m[2m 18.56 kB[22m[1m[22m
|
||||
[2mdist/[22m[35massets/index-BNS8Tp4f.css [39m[1m[2m426.59 kB[22m[1m[22m[2m │ gzip: 69.40 kB[22m
|
||||
[2mdist/[22m[36massets/vendor-CrqJdhs-.js [39m[1m[2m140.80 kB[22m[1m[22m[2m │ gzip: 45.27 kB[22m
|
||||
[2mdist/[22m[36massets/index-DR8RUeAl.js [39m[1m[2m457.16 kB[22m[1m[22m[2m │ gzip: 119.71 kB[22m
|
||||
[2mdist/[22m[36massets/maplibre-DEBTaTl_.js [39m[1m[2m802.71 kB[22m[1m[22m[2m │ gzip: 217.71 kB[22m
|
||||
[32m✓ built in 9.80s[39m
|
||||
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
|
||||
|
||||
[36mvite v7.3.6 [32mbuilding client environment for production...[36m[39m
|
||||
transforming...
|
||||
[32m✓[39m 1896 modules transformed.
|
||||
rendering chunks...
|
||||
computing gzip size...
|
||||
[2mdist/[22m[32mindex.html [39m[1m[2m 0.98 kB[22m[1m[22m[2m │ gzip: 0.49 kB[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-500-normal-BYYD-dBL.woff2 [39m[1m[2m 14.04 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-600-normal-4f0koTD-.woff2 [39m[1m[2m 14.17 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-700-normal-BZp_XxE4.woff2 [39m[1m[2m 14.21 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-600-normal-Fru-LXNs.woff2 [39m[1m[2m 14.59 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-400-normal-8Rpg0ruU.woff2 [39m[1m[2m 14.63 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-500-normal-NlrCPXnF.woff2 [39m[1m[2m 14.66 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-500-normal-DMZssgOp.woff [39m[1m[2m 18.24 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-600-normal-BqgrALkZ.woff [39m[1m[2m 18.38 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/manrope-latin-700-normal-DGRFkw-m.woff [39m[1m[2m 18.41 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-400-normal-SBbinRkI.woff [39m[1m[2m 18.49 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-500-normal-vCxiVFAq.woff [39m[1m[2m 18.52 kB[22m[1m[22m
|
||||
[2mdist/[22m[32massets/public-sans-latin-600-normal-BR59oU-I.woff [39m[1m[2m 18.56 kB[22m[1m[22m
|
||||
[2mdist/[22m[35massets/index-BNS8Tp4f.css [39m[1m[2m426.59 kB[22m[1m[22m[2m │ gzip: 69.40 kB[22m
|
||||
[2mdist/[22m[36massets/vendor-CrqJdhs-.js [39m[1m[2m140.80 kB[22m[1m[22m[2m │ gzip: 45.27 kB[22m
|
||||
[2mdist/[22m[36massets/index-DR8RUeAl.js [39m[1m[2m457.16 kB[22m[1m[22m[2m │ gzip: 119.71 kB[22m
|
||||
[2mdist/[22m[36massets/maplibre-DEBTaTl_.js [39m[1m[2m802.71 kB[22m[1m[22m[2m │ gzip: 217.71 kB[22m
|
||||
[32m✓ built in 9.80s[39m
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
[1m[46m RUN [49m[22m [36mv3.2.6 [39m[90mC:/Projects/geointel/frontend[39m
|
||||
|
||||
[32m✓[39m src/lib/datasetCapabilities.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
||||
[32m✓[39m src/lib/performanceBudget.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 41[2mms[22m[39m
|
||||
[32m✓[39m src/components/map/mapWorkspaceUtils.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 36[2mms[22m[39m
|
||||
[32m✓[39m src/hooks/useMapThemeSelectionInsights.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 43[2mms[22m[39m
|
||||
[32m✓[39m src/hooks/useCoverageResolver.test.tsx [2m([22m[2m4 tests[22m[2m)[22m[32m 47[2mms[22m[39m
|
||||
[32m✓[39m src/hooks/useTemporalComparison.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 36[2mms[22m[39m
|
||||
[32m✓[39m src/components/WorkbenchStatusStrip.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m 151[2mms[22m[39m
|
||||
[32m✓[39m src/hooks/useWorkbenchBootstrap.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 60[2mms[22m[39m
|
||||
[32m✓[39m src/components/map/LiveAnalysisJourney.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 59[2mms[22m[39m
|
||||
[32m✓[39m src/components/overview/ProjectAtlasIllustration.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m 267[2mms[22m[39m
|
||||
[32m✓[39m src/components/models/ModelSelector.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[33m 342[2mms[22m[39m
|
||||
[32m✓[39m src/components/detection/AiPipelineIllustration.test.tsx [2m([22m[2m1 test[22m[2m)[22m[32m 296[2mms[22m[39m
|
||||
[32m✓[39m src/components/auth/LandingProjectStory.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[33m 332[2mms[22m[39m
|
||||
[32m✓[39m src/components/map/MunicipalitySearch.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[33m 483[2mms[22m[39m
|
||||
[33m[2m✓[22m[39m MunicipalitySearch[2m > [22msearches the official municipality catalog and activates a result [33m 468[2mms[22m[39m
|
||||
[32m✓[39m src/components/auth/LandingPage.test.tsx [2m([22m[2m4 tests[22m[2m)[22m[33m 825[2mms[22m[39m
|
||||
[33m[2m✓[22m[39m LandingPage[2m > [22mpresents the professionalised landing page and submits the operator login [33m 471[2mms[22m[39m
|
||||
[32m✓[39m src/lib/bathymetryRaster.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
||||
|
||||
[2m Test Files [22m [1m[32m16 passed[39m[22m[90m (16)[39m
|
||||
[2m Tests [22m [1m[32m51 passed[39m[22m[90m (51)[39m
|
||||
[2m Start at [22m 18:35:16
|
||||
[2m Duration [22m 7.37s[2m (transform 2.45s, setup 0ms, collect 14.66s, tests 3.03s, environment 45.46s, prepare 8.07s)[22m
|
||||
|
||||
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
|
||||
|
||||
|
||||
[1m[46m RUN [49m[22m [36mv3.2.6 [39m[90mC:/Projects/geointel/frontend[39m
|
||||
|
||||
[32m✓[39m src/lib/datasetCapabilities.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
||||
[32m✓[39m src/lib/performanceBudget.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 41[2mms[22m[39m
|
||||
[32m✓[39m src/components/map/mapWorkspaceUtils.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 36[2mms[22m[39m
|
||||
[32m✓[39m src/hooks/useMapThemeSelectionInsights.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 43[2mms[22m[39m
|
||||
[32m✓[39m src/hooks/useCoverageResolver.test.tsx [2m([22m[2m4 tests[22m[2m)[22m[32m 47[2mms[22m[39m
|
||||
[32m✓[39m src/hooks/useTemporalComparison.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 36[2mms[22m[39m
|
||||
[32m✓[39m src/components/WorkbenchStatusStrip.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m 151[2mms[22m[39m
|
||||
[32m✓[39m src/hooks/useWorkbenchBootstrap.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 60[2mms[22m[39m
|
||||
[32m✓[39m src/components/map/LiveAnalysisJourney.test.tsx [2m([22m[2m3 tests[22m[2m)[22m[32m 59[2mms[22m[39m
|
||||
[32m✓[39m src/components/overview/ProjectAtlasIllustration.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[32m 267[2mms[22m[39m
|
||||
[32m✓[39m src/components/models/ModelSelector.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[33m 342[2mms[22m[39m
|
||||
[32m✓[39m src/components/detection/AiPipelineIllustration.test.tsx [2m([22m[2m1 test[22m[2m)[22m[32m 296[2mms[22m[39m
|
||||
[32m✓[39m src/components/auth/LandingProjectStory.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[33m 332[2mms[22m[39m
|
||||
[32m✓[39m src/components/map/MunicipalitySearch.test.tsx [2m([22m[2m2 tests[22m[2m)[22m[33m 483[2mms[22m[39m
|
||||
[33m[2m✓[22m[39m MunicipalitySearch[2m > [22msearches the official municipality catalog and activates a result [33m 468[2mms[22m[39m
|
||||
[32m✓[39m src/components/auth/LandingPage.test.tsx [2m([22m[2m4 tests[22m[2m)[22m[33m 825[2mms[22m[39m
|
||||
[33m[2m✓[22m[39m LandingPage[2m > [22mpresents the professionalised landing page and submits the operator login [33m 471[2mms[22m[39m
|
||||
[32m✓[39m src/lib/bathymetryRaster.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
||||
|
||||
[2m Test Files [22m [1m[32m16 passed[39m[22m[90m (16)[39m
|
||||
[2m Tests [22m [1m[32m51 passed[39m[22m[90m (51)[39m
|
||||
[2m Start at [22m 18:35:16
|
||||
[2m Duration [22m 7.37s[2m (transform 2.45s, setup 0ms, collect 14.66s, tests 3.03s, environment 45.46s, prepare 8.07s)[22m
|
||||
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user