Skip to content

Commit 14adee2

Browse files
harden AV ingestion contracts, align CI go toolchain, and sync roadmap/docs
1 parent f2bf0a4 commit 14adee2

26 files changed

Lines changed: 1854 additions & 100 deletions
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: AV Ingestion Go Tests
2+
3+
"on":
4+
workflow_dispatch:
5+
push:
6+
branches: [ main ]
7+
paths:
8+
- 'sensors/mobile/**'
9+
- 'sensors/drone/**'
10+
- '.github/workflows/av-ingestion-go-tests.yml'
11+
- 'go.mod'
12+
- 'go.sum'
13+
pull_request:
14+
branches: [ main ]
15+
paths:
16+
- 'sensors/mobile/**'
17+
- 'sensors/drone/**'
18+
- '.github/workflows/av-ingestion-go-tests.yml'
19+
- 'go.mod'
20+
- 'go.sum'
21+
22+
permissions:
23+
contents: read
24+
25+
jobs:
26+
av-ingestion-tests:
27+
name: AV Ingestion Contract Tests
28+
runs-on: ubuntu-latest
29+
30+
steps:
31+
- name: Checkout code
32+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
33+
34+
- name: Set up Go
35+
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
36+
with:
37+
go-version-file: go.mod
38+
cache: true
39+
40+
- name: Run mobile and drone ingestion tests
41+
run: |
42+
bash scripts/go-with-aligned-toolchain.sh test -v ./sensors/mobile ./sensors/drone

.github/workflows/full-validation-pr-gate.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,19 @@ jobs:
3333
with:
3434
go-version-file: go.mod
3535

36+
- name: Run AV ingestion contract tests
37+
run: bash scripts/go-with-aligned-toolchain.sh test -v ./sensors/mobile ./sensors/drone
38+
3639
- name: Build backend in FIPS-required mode
3740
run: |
3841
mkdir -p bin
39-
CGO_ENABLED=1 GOFIPS140=latest go build -tags=requirefips -ldflags "-X main.fipsMode=required -X main.buildProfile=prod" -o bin/sovereign_backend ./cmd/sovereign-node
42+
CGO_ENABLED=1 GOFIPS140=latest bash scripts/go-with-aligned-toolchain.sh build -tags=requirefips -ldflags "-X main.fipsMode=required -X main.buildProfile=prod" -o bin/sovereign_backend ./cmd/sovereign-node
4043
4144
- name: Verify backend build metadata
4245
run: |
4346
mkdir -p test-results/full-validation
44-
go version -m bin/sovereign_backend | tee test-results/full-validation/fips-buildinfo.txt
45-
go version -m bin/sovereign_backend | grep -E "GOFIPS140=latest|-tags=requirefips|CGO_ENABLED=1"
47+
bash scripts/go-with-aligned-toolchain.sh version -m bin/sovereign_backend | tee test-results/full-validation/fips-buildinfo.txt
48+
bash scripts/go-with-aligned-toolchain.sh version -m bin/sovereign_backend | grep -E "GOFIPS140=latest|-tags=requirefips|CGO_ENABLED=1"
4649
4750
- name: Prepare test environment
4851
run: npm run test:setup

Documentation/Project/ROADMAP.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,22 @@ This roadmap tracks execution priorities for the current `v1.2.0` platform basel
125125
- browser telemetry is visible in HUD KPI/panel surfaces: met
126126
- observability dashboard query validation includes all referenced metrics: met
127127

128+
### Milestone 9: AV-Ready v1.0 One-Pass Sprint
129+
- Status: planned
130+
- Execute a single-pass sprint to harden AV mapping runtime and validation gates.
131+
- Canonical sprint document:
132+
- `docs/AV_READY_V1_ONE_PASS_SPRINT.md`
133+
- Primary outcomes:
134+
- sensor contracts and ingestion validation
135+
- time alignment and calibration enforcement
136+
- fused pose output replacing fallback nominal path
137+
- end-to-end map update and deterministic tile generation
138+
- AV-specific observability and CI merge gate coverage
139+
- Exit criteria:
140+
- one-pass definition of done in sprint document fully met
141+
- CI AV lane required and green on main
142+
- release-readiness summary updated with AV v1.0 evidence bundle
143+
128144
### Milestone 4: Scale and Readiness Gate
129145
- Status: completed (2026-03-17)
130146
- 10-node scale test executed on 4-core/15 GiB host; 10/10 agents confirmed running.

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
.PHONY: all build test clean deploy logs help \
55
smoke testnet-wallet-readiness \
6-
stack-start stack-verify stack-down screenshots-check go-env observability-smoke observability-live-smoke compose-service-drift-check quickstart-verify alerts-test benchmark-fedavg-compare
6+
stack-start stack-verify stack-down screenshots-check go-env go-toolchain-check observability-smoke observability-live-smoke compose-service-drift-check quickstart-verify alerts-test benchmark-fedavg-compare
77

88
COMPOSE ?= docker compose
99
FULL_COMPOSE_FILE ?= docker-compose.full.yml
@@ -269,6 +269,9 @@ go-env:
269269
@$(GO) version
270270
@$(GO) env GOROOT GOTOOLCHAIN GOMODCACHE GOCACHE
271271

272+
go-toolchain-check:
273+
@bash scripts/go-toolchain-sanity.sh
274+
272275
proto:
273276
@echo "📝 Generating protobuf files..."
274277
protoc --go_out=. --go-grpc_out=. pkg/proto/*.proto
@@ -315,6 +318,7 @@ help:
315318
@echo " make lint - Run linters"
316319
@echo " make lint-soft - Run linters without failing target"
317320
@echo " make go-env - Print effective Go toolchain settings"
321+
@echo " make go-toolchain-check - Validate Go driver/compiler/linker version alignment"
318322
@echo " make observability-smoke - Validate dashboard queries and JSON syntax"
319323
@echo " make observability-live-smoke - Validate lower-half operations panel queries against live Prometheus"
320324
@echo " make compose-service-drift-check - Detect stale compose service names in scripts"

av_ingestion_alerts.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
groups:
2+
- name: av_ingestion_alerts
3+
interval: 15s
4+
rules:
5+
- alert: AVIngestionRejectSpike
6+
expr: increase(av_ingestion_rejected_total[10m]) > 50
7+
for: 5m
8+
labels:
9+
severity: warning
10+
service: av-ingestion
11+
team: platform
12+
annotations:
13+
summary: "AV ingestion reject spike detected"
14+
description: "AV ingestion rejected more than 50 samples in 10 minutes."
15+
16+
- alert: AVIngestionStaleSignal
17+
expr: time() - av_ingestion_last_update_timestamp_seconds > 120
18+
for: 5m
19+
labels:
20+
severity: warning
21+
service: av-ingestion
22+
team: platform
23+
annotations:
24+
summary: "AV ingestion appears stale"
25+
description: "No AV ingestion update for more than 2 minutes."

0 commit comments

Comments
 (0)