Initial public release
GeoIntel release gates / Compile, test, contracts and builds (push) Successful in 1m49s
GeoIntel release gates / Python and npm vulnerability policy (push) Successful in 21s
GeoIntel release gates / Production AI image, SBOM and container scan (push) Successful in 5m39s
GeoIntel release gates / Deploy exact gated revision to Unraid (push) Failing after 58m43s

This commit is contained in:
Jens
2026-08-31 21:56:53 +02:00
commit faeb58ef6d
1386 changed files with 263203 additions and 0 deletions
@@ -0,0 +1,45 @@
# Autonomy Boundaries for Codex
Codex should be proactive, but not uncontrolled.
## Green zone — Codex can decide
- function and class names when consistent with docs;
- internal helper extraction;
- validation improvements;
- error message clarity;
- test fixture additions;
- component decomposition;
- minor styling improvements;
- logging improvements;
- dependency pinning within the approved stack.
## Yellow zone — Codex can decide but must document
- replacing a library with an equivalent only if dependency installation fails and the replacement stays within the stack intent;
- changing endpoint internals while preserving contracts;
- adding new tables that support existing aggregates;
- adding background job scaffolding earlier than planned;
- improving storage folder structure while preserving published paths.
Must be documented in:
- `docs/CODEX_EXECUTION_LOG.md`;
- `CHANGELOG.md`;
- relevant ADR/RFC if architectural.
## Red zone — Codex must stop and ask
- changing FastAPI/React/PostGIS stack;
- removing GRB-centered QA/QC direction;
- turning the product into a generic GIS dashboard;
- removing AI pipeline readiness;
- changing V1 scope boundaries;
- adding authentication/multi-user as core V1;
- adding paid/cloud-only dependencies as mandatory;
- implementing real external downloads without source strategy and license notes;
- changing output formats away from GeoJSON/COCO/YOLO/masks without approval.
## Safe fallback principle
When a dependency, data source or model cannot be used yet, implement a controlled adapter interface and deterministic fixture-backed behavior. Mark it as a scaffold, not as production-complete.
@@ -0,0 +1,51 @@
# Failure Recovery Playbook
Codex must not spiral when a build fails. Use this playbook.
## Backend import failure
1. Run the smallest import command available.
2. Fix circular imports first.
3. Verify package `__init__.py` files.
4. Ensure config does not require unavailable services at import time.
5. Add or update a smoke test.
## Database failure
1. Check environment variables.
2. Check whether PostGIS extension is required at migration time.
3. Separate pure unit tests from DB integration tests.
4. Do not remove geometry capability to make tests pass.
5. Document required local Postgres/PostGIS command.
## Frontend build failure
1. Run TypeScript check.
2. Fix missing exports/imports.
3. Do not silence errors with `any` unless documented and temporary.
4. Ensure API types match contract fixtures.
5. Add an empty/error state rather than fake success.
## Rasterio/GDAL dependency failure
1. Keep service interface intact.
2. Add graceful unavailable-state handling.
3. Keep GeoJSON/vector paths working.
4. Document local dependency requirement.
5. Do not fake raster metadata as real metadata.
## YOLO/SAM unavailable
1. Keep model registry and detection service interface.
2. Implement deterministic fixture inference adapter.
3. Mark adapter as demo/scaffold.
4. Preserve output shape expected by QA/QC.
5. Do not block foundation work.
## External data source unavailable
1. Fall back to fixtures.
2. Preserve source adapter contract.
3. Add retry/error state.
4. Do not hardcode one live response.
5. Document the failure in execution log.
@@ -0,0 +1,43 @@
# Improvement Policy
GeoIntel should be strict enough for autonomous execution but flexible enough for good engineering.
## Desired improvements
Codex is encouraged to improve:
- typed API clients;
- service boundaries;
- validation specificity;
- reusable geospatial utilities;
- test determinism;
- frontend state handling;
- developer commands;
- logging and diagnostics;
- small UX clarity improvements.
## Undesired improvements
Do not add:
- unrelated dashboards;
- user accounts before V1;
- payment/billing;
- social features;
- generic file manager replacing dataset manager;
- raw LLM chatbot as a central feature;
- unsupported live data scraping;
- excessive styling frameworks beyond the chosen frontend stack.
## Improvement report format
When making improvements beyond the exact prompt, add:
```text
IMPROVEMENT:
- what changed
- why it helps GeoIntel
- why it does not change scope
```
inside `docs/CODEX_EXECUTION_LOG.md`.
@@ -0,0 +1,24 @@
# Quality Gate Matrix
Every implementation pass must satisfy the relevant gates.
| Gate | Backend | Frontend | Data/GIS | AI | Required before merge |
|---|---|---|---|---|---|
| Import/build | app imports | TS builds | processing modules import | model adapters import | yes |
| Contract | response envelope | API client typed | metadata shape stable | detection output shape stable | yes |
| Validation | request schemas | form errors | CRS/file errors | threshold/model errors | yes |
| Tests | unit/contract | component where feasible | fixture processing | adapter test | yes for touched area |
| Docs | route/service docs | UI states docs | source/operation docs | model notes | yes |
| No fake success | errors visible | empty states real | unsupported explicit | unavailable explicit | yes |
## Minimum gates for Day 1
- Backend health passes.
- Project/area/dataset contracts pass.
- Frontend shell builds.
- Fixture metadata tests pass.
- Smoke script documents exact failures if any remain.
## Gate failure response
If a gate fails, Codex must either fix it or mark the pass incomplete. Do not claim completion when validation was skipped.