Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
315 commits
Select commit Hold shift + click to select a range
46b4f95
Add private candidate handoff contract
eliperez-dev Sep 14, 2026
a14615c
Import private candidates into marked disposable database
eliperez-dev Sep 14, 2026
66b079d
Add UK private candidate handoff bridge
eliperez-dev Sep 14, 2026
a974c68
Test UK candidate handoff against importer
eliperez-dev Sep 14, 2026
203e982
Track private UK handoff without release claim
eliperez-dev Sep 14, 2026
1cc8f66
Add honest private candidate inspection panel
eliperez-dev Sep 14, 2026
46e39fa
Test guarded candidate import and private preview end to end
eliperez-dev Sep 14, 2026
088db44
Record bounded UK private handoff validation
eliperez-dev Sep 14, 2026
0e73b99
Document Italy official dictionary boundaries
eliperez-dev Sep 14, 2026
4e62422
Add Denmark source candidate handoff bridge
eliperez-dev Sep 14, 2026
89fd3b9
Bridge Denmark records to private candidate handoff
eliperez-dev Sep 14, 2026
9c88637
Fix Denmark handoff test import
eliperez-dev Sep 14, 2026
3e8e47a
Normalize legacy acquisition metadata at adapter boundary
eliperez-dev Sep 14, 2026
855af99
Use conservative registry adapter status
eliperez-dev Sep 14, 2026
8f3db4c
Keep private preview controls out of public DOM
eliperez-dev Sep 14, 2026
f49a305
Clarify source-owned pipeline stage layout
eliperez-dev Sep 14, 2026
65ecd8d
Add typed FSS private candidate bridge
eliperez-dev Sep 14, 2026
a0193db
Record UK disposable candidate API validation
eliperez-dev Sep 14, 2026
7ca5df7
Keep UK runtime status conservative
eliperez-dev Sep 14, 2026
f3f0692
Add functional disposable test-release UI
eliperez-dev Sep 14, 2026
3fd0535
Add guarded disposable test-release API and promotion isolation
eliperez-dev Sep 14, 2026
de98f73
Run test-release and country handoff checks in CI
eliperez-dev Sep 14, 2026
9ce3596
Document UK guarded real test-release flow
eliperez-dev Sep 14, 2026
c0b2769
Add repeatable UK FSA refresh QA
eliperez-dev Sep 14, 2026
10f0df3
Document Denmark-shaped candidate E2E coverage
eliperez-dev Sep 14, 2026
b4fae36
Add private Italy 853 candidate adapter
eliperez-dev Sep 14, 2026
6650b84
style: format Italy 853 adapter
eliperez-dev Sep 14, 2026
193b718
Verify guarded test-release UI against disposable API
eliperez-dev Sep 14, 2026
7701f37
Correct Italy 853 source row count
eliperez-dev Sep 14, 2026
c3c05aa
Harden production readiness checks
eliperez-dev Sep 14, 2026
3ca989b
Validate complete database schema before readiness
eliperez-dev Sep 14, 2026
c597729
Add shared private run QA seam
eliperez-dev Sep 14, 2026
19710f3
Add typed runner and resumable candidate batches
eliperez-dev Sep 14, 2026
83a4940
Commit guard transaction before import batches
eliperez-dev Sep 14, 2026
5d114ff
Add disposable batch resume E2E
eliperez-dev Sep 14, 2026
007342b
Exercise private Italy 853 handoff end to end
eliperez-dev Sep 14, 2026
1e3d2ea
Add Denmark refresh drift guards
eliperez-dev Sep 14, 2026
64ae359
Record Denmark private refresh evidence
eliperez-dev Sep 14, 2026
4dad521
Keep first candidate batch atomic
eliperez-dev Sep 15, 2026
29b44a3
Harden restore restriction ledger verification
eliperez-dev Sep 15, 2026
61cb6f2
Add private country health snapshot contract
eliperez-dev Sep 15, 2026
b18793a
Refresh Italy source status evidence
eliperez-dev Sep 15, 2026
e628a8a
Fix standalone source health CLI entrypoint
eliperez-dev Sep 15, 2026
e0c817d
add Italy private refresh entrypoint
eliperez-dev Sep 15, 2026
ee4e521
Establish shared private country lifecycle
eliperez-dev Sep 15, 2026
73acbc0
Add end-to-end suppression re-exposure safeguards
eliperez-dev Sep 15, 2026
09e94bb
Add private Italy 853/2004 lifecycle parity
eliperez-dev Sep 15, 2026
f3c35e4
Complete UK private V2 lifecycle
eliperez-dev Sep 15, 2026
b98bbf9
Document Belgium FASFC source readiness
eliperez-dev Sep 15, 2026
bccf610
Integrate frontend with V2 profiles and states
eliperez-dev Sep 15, 2026
a4f9930
Finalize v2 integration validation record
eliperez-dev Sep 15, 2026
ba255e4
Add deterministic V1 V2 reconciliation reports
eliperez-dev Sep 15, 2026
3970f71
Inventory legacy country reconciliation coverage
eliperez-dev Sep 15, 2026
8daf8aa
Add private environment safety gates
eliperez-dev Sep 15, 2026
fc6529c
Add private Germany and Belgium source lifecycles
eliperez-dev Sep 15, 2026
fa1f95b
Add versioned animal scale evidence foundation
eliperez-dev Sep 15, 2026
ec54f45
Scale V2 discovery queries and local frontend
eliperez-dev Sep 15, 2026
b6694c8
Align frontend safety checks with server search
eliperez-dev Sep 16, 2026
ef94b19
Decouple ledger SQL generation from psycopg
eliperez-dev Sep 16, 2026
e5f19fb
Add private-alpha source operations
eliperez-dev Sep 16, 2026
69e6a42
Advance mature country private validation
eliperez-dev Sep 16, 2026
43bfe2e
Add private France and Canada source pipelines
eliperez-dev Sep 16, 2026
e4fbe49
Add private US source recovery pipeline slice
eliperez-dev Sep 16, 2026
b945086
Reconcile shared review packet contracts
eliperez-dev Sep 16, 2026
87fde11
Remove committed Geocodio credential literals
eliperez-dev Sep 16, 2026
3b69c8e
Consolidate Sprint 2 integration
eliperez-dev Sep 16, 2026
7613ee3
research: reconcile Australia source reconnaissance
eliperez-dev Sep 16, 2026
b1c4e81
Track Australia artifact provenance sidecar
eliperez-dev Sep 16, 2026
c6bb671
test: align Australia integration contracts
eliperez-dev Sep 16, 2026
b84c7d9
Harden E2E fixture retry cleanup
eliperez-dev Sep 16, 2026
4cbd0fe
Document Netherlands source reconnaissance
eliperez-dev Sep 16, 2026
c8a76cb
Fix Netherlands report trailing whitespace
eliperez-dev Sep 16, 2026
f516299
Add Ireland source reconnaissance
eliperez-dev Sep 16, 2026
74c5665
Add Poland source reconnaissance
eliperez-dev Sep 16, 2026
57fa8a1
Fix consolidated registry and metadata gates
eliperez-dev Sep 16, 2026
f697fa8
Add row-free coordinate coverage diagnostic
eliperez-dev Sep 16, 2026
ae0a4c0
Harden migration recovery and suppression coverage
eliperez-dev Sep 16, 2026
2a20ed2
docs: add Sweden source reconnaissance
eliperez-dev Sep 16, 2026
215f963
docs: add Norway source reconnaissance
eliperez-dev Sep 16, 2026
4767613
docs: add Finland source reconnaissance
eliperez-dev Sep 16, 2026
c183292
docs: add Estonia source reconnaissance
eliperez-dev Sep 16, 2026
8df1ddc
docs: add Latvia source reconnaissance
eliperez-dev Sep 16, 2026
ba203a3
docs: add Lithuania source reconnaissance
eliperez-dev Sep 16, 2026
6040c36
docs: add Czechia source reconnaissance
eliperez-dev Sep 16, 2026
e2c3b87
docs: add Slovakia source reconnaissance
eliperez-dev Sep 16, 2026
42f4163
docs: add Slovenia source reconnaissance
eliperez-dev Sep 16, 2026
2849741
docs: add Croatia source reconnaissance
eliperez-dev Sep 16, 2026
f486870
docs: add Romania source reconnaissance
eliperez-dev Sep 16, 2026
c8e2972
Add operations scale and E2E hardening
eliperez-dev Sep 16, 2026
82244a2
docs: add Bulgaria source reconnaissance
eliperez-dev Sep 16, 2026
e6512f2
docs: add Serbia source reconnaissance
eliperez-dev Sep 16, 2026
b4aca9c
docs: add Bosnia and Herzegovina source reconnaissance
eliperez-dev Sep 16, 2026
f356d6d
docs: add North Macedonia source reconnaissance
eliperez-dev Sep 16, 2026
9c6c613
docs: add Albania source reconnaissance
eliperez-dev Sep 16, 2026
ebee719
test: read recon metadata as UTF-8
eliperez-dev Sep 16, 2026
a06ac17
docs: add Kosovo source reconnaissance
eliperez-dev Sep 16, 2026
56b7527
docs: add Moldova source reconnaissance
eliperez-dev Sep 16, 2026
4bb4aff
Harden spatial projection and request observability
eliperez-dev Sep 16, 2026
c0f444e
test: include migration 030 in graph ordering contract
eliperez-dev Sep 16, 2026
737ddce
test: correct final migration window
eliperez-dev Sep 16, 2026
c9d8def
Add Ukraine source reconnaissance metadata
eliperez-dev Sep 16, 2026
b466bf8
Document map visualization platform decision
eliperez-dev Sep 16, 2026
083967c
Add bounded concurrent API load rehearsal
eliperez-dev Sep 16, 2026
408ff20
Add Georgia source reconnaissance metadata
eliperez-dev Sep 16, 2026
2764672
Add Armenia source reconnaissance metadata
eliperez-dev Sep 16, 2026
356a1a8
Add Azerbaijan source reconnaissance metadata
eliperez-dev Sep 16, 2026
d328ee6
Add Turkey source reconnaissance metadata
eliperez-dev Sep 16, 2026
387055b
Add Cyprus source reconnaissance metadata
eliperez-dev Sep 16, 2026
f81dcf6
Flatten public projection read path
eliperez-dev Sep 16, 2026
739dd8d
test: include migration 032 in ordering contract
eliperez-dev Sep 16, 2026
51fce78
Document remaining projection scale boundary
eliperez-dev Sep 16, 2026
5a77e27
Prototype fail-closed release summary component
eliperez-dev Sep 16, 2026
9dc05a6
test: include migration 033 in ordering contract
eliperez-dev Sep 16, 2026
60e04cb
test: wait for readiness service bind
eliperez-dev Sep 16, 2026
99233bf
pipeline: represent unscheduled registry sources explicitly
eliperez-dev Sep 16, 2026
0d947e9
perf: add live eligibility join indexes
eliperez-dev Sep 16, 2026
ec04757
Add deterministic geospatial readiness audit
eliperez-dev Sep 16, 2026
594e444
Add deterministic private graph rehearsal
eliperez-dev Sep 16, 2026
4463f55
docs: add Lebanon source reconnaissance
eliperez-dev Sep 16, 2026
049ee44
pipeline: consolidate acquisition artifact boundary
eliperez-dev Sep 16, 2026
9e66eb2
Expand accountability graph rehearsal contract
eliperez-dev Sep 16, 2026
492e2d6
Audit V1 and manifest-driven V2 geospatial corpora
eliperez-dev Sep 16, 2026
78dc4e9
Merge branch 'codex/sprint3-accountability-graph' into codex/sprint3-…
eliperez-dev Sep 16, 2026
4617ad6
Merge branch 'codex/sprint3-geospatial' into codex/sprint3-integration
eliperez-dev Sep 16, 2026
2d9c012
Merge branch 'codex/sprint3-api-scale' into codex/sprint3-integration
eliperez-dev Sep 16, 2026
fa297a5
Merge branch 'codex/sprint3-lebanon' into codex/sprint3-integration
eliperez-dev Sep 16, 2026
0937b00
test: validate Sprint 3 scale evidence
eliperez-dev Sep 16, 2026
4f0e43f
Add private real-data corpus inventory harness
eliperez-dev Sep 16, 2026
6899340
Add cross-platform V2 developer entrypoint
eliperez-dev Sep 16, 2026
2ee5929
test: bind V2 location contract surfaces
eliperez-dev Sep 16, 2026
2038e5e
Add private real corpus regression harness
eliperez-dev Sep 16, 2026
6684b84
Document safe pipeline contributor path
eliperez-dev Sep 16, 2026
4b327e8
Improve frontend contributor onboarding
eliperez-dev Sep 16, 2026
75fb9c6
Clean dead tooling references and generated files
eliperez-dev Sep 16, 2026
9b87b73
docs: improve backend developer onboarding
eliperez-dev Sep 16, 2026
af0ceaf
Add private 50k legacy V2 rehearsal
eliperez-dev Sep 16, 2026
dc53583
Add real geospatial and graph quality evaluation
eliperez-dev Sep 16, 2026
22b8c76
test: add private distribution load rehearsal path
eliperez-dev Sep 16, 2026
5f110df
Record current-source reacquisition rehearsal
eliperez-dev Sep 16, 2026
fcc0476
Add aggregate current-source rehearsal validator
eliperez-dev Sep 17, 2026
5af1a64
Add CFIA workbook ingestion adapter
eliperez-dev Sep 17, 2026
8300fdf
Add row-free US graph pilot metrics
eliperez-dev Sep 17, 2026
1e04080
Document Switzerland FSVO source reconnaissance
eliperez-dev Sep 17, 2026
16de2f4
Harden V2 discovery read path at scale
eliperez-dev Sep 17, 2026
ac48ceb
Add bounded corpus resilience rehearsal
eliperez-dev Sep 17, 2026
ef2fd02
Add current-corpus geospatial readiness audit
eliperez-dev Sep 17, 2026
7aff04b
Freeze V2 MVP contract and claim evidence
eliperez-dev Sep 17, 2026
b747cc3
Add representative V2 API load rehearsal
eliperez-dev Sep 17, 2026
a327116
Integrate current source candidates through private rehearsal
eliperez-dev Sep 17, 2026
d92ae13
Complete current corpus candidate rehearsal lane
eliperez-dev Sep 17, 2026
c981260
Optimize live V2 discovery read path
eliperez-dev Sep 17, 2026
a619264
Add manifest-bound public discovery read model
eliperez-dev Sep 17, 2026
caee760
Optimize live discovery read gates
eliperez-dev Sep 17, 2026
12bbe7e
test: include discovery read model migrations
eliperez-dev Sep 17, 2026
2617dcf
Record passing 50k corpus resilience rehearsal
eliperez-dev Sep 17, 2026
78c15bc
Add production operations diagnostics and runbook
eliperez-dev Sep 17, 2026
89fa4b9
Close representative V2 API scale rehearsal
eliperez-dev Sep 17, 2026
b0c8071
Add reviewed demonstration release lane
eliperez-dev Sep 17, 2026
bd8f5f9
feat(frontend): complete functional discovery contract
eliperez-dev Sep 17, 2026
570892a
audit public profile and suppression boundaries
eliperez-dev Sep 17, 2026
8ddc6fc
fix integration diagnostics and local E2E contract
eliperez-dev Sep 17, 2026
47dbdaa
fix: isolate and bound E2E startup retries
eliperez-dev Sep 17, 2026
5b01b92
Add scalable country source platform contracts
eliperez-dev Sep 17, 2026
340acfe
feat: harden private Denmark and Italy candidate review
eliperez-dev Sep 17, 2026
c133cfc
Advance France and UK private candidate handoffs
eliperez-dev Sep 17, 2026
8f3a9e9
Prepare private Canada source graph candidates
eliperez-dev Sep 17, 2026
c7c08f2
Build private US real-data graph rehearsal
eliperez-dev Sep 17, 2026
157d3cd
Document Portugal source reconnaissance
eliperez-dev Sep 17, 2026
9359842
Acquire private Germany and Belgium current candidates
eliperez-dev Sep 17, 2026
34b56b4
fix: update country platform registry count
eliperez-dev Sep 17, 2026
1630f4c
Add private accountability graph query layer
eliperez-dev Sep 18, 2026
2bd4b1b
quarantine duplicate accountability relationships
eliperez-dev Sep 18, 2026
d06a50b
preserve declared totals for unavailable handoffs
eliperez-dev Sep 18, 2026
5c31297
Improve private graph developer workflows
eliperez-dev Sep 18, 2026
68ad23c
Add private accountability graph explorer
eliperez-dev Sep 18, 2026
47b98bb
Document India accountability source reconnaissance
eliperez-dev Sep 18, 2026
518ae1a
Format consolidated private graph handlers
eliperez-dev Sep 18, 2026
9daf535
Update migration and registry contract tests
eliperez-dev Sep 18, 2026
4d0dbca
Fix private graph test asset paths
eliperez-dev Sep 18, 2026
6ea4034
Align private graph stylesheet test with explorer markup
eliperez-dev Sep 18, 2026
c19caea
Consolidate US current-data parity sprint
eliperez-dev Sep 18, 2026
f8d9f13
Harden US current-data parity contracts
eliperez-dev Sep 18, 2026
1fa2d2d
Consolidate US real-data proof Wave 1
eliperez-dev Sep 18, 2026
d676d1e
docs: recon US enforcement sources
eliperez-dev Sep 18, 2026
52b7371
test: guard US real-data proof manifests
eliperez-dev Sep 18, 2026
d3bc26f
Demonstrate private APHIS accountability graph
eliperez-dev Sep 18, 2026
71c8a9b
Fix US refresh diagnostics artifact paths
eliperez-dev Sep 18, 2026
39124ae
demo private US APHIS accountability graph
eliperez-dev Sep 18, 2026
6b407e6
Fix cross-platform manifest integrity test
eliperez-dev Sep 18, 2026
8e8b7db
fsis: block stale private handoffs
eliperez-dev Sep 18, 2026
b479033
Account for APHIS incomplete inspection coverage
eliperez-dev Sep 18, 2026
0396b5f
Add private FSIS recall graph evidence slice
eliperez-dev Sep 18, 2026
22a7c00
Document Brazil environmental and research sources
eliperez-dev Sep 18, 2026
2f796b1
Harden integrated US evidence review gates
eliperez-dev Sep 18, 2026
d1ba77d
Add review-gated hosted geocoder adapter
eliperez-dev Sep 18, 2026
316d549
Add private candidate review console
eliperez-dev Sep 18, 2026
8842295
Align private review console with registry packet
eliperez-dev Sep 18, 2026
898fe01
Build private candidate review console
eliperez-dev Sep 18, 2026
6367a17
Add country geocoding reconnaissance profiles
eliperez-dev Sep 18, 2026
19e1e59
Harden unattended geocoding worker
eliperez-dev Sep 18, 2026
a45ebe5
Add geocoding operator tooling
eliperez-dev Sep 18, 2026
8032e56
Fix private graph traversal and integration gates
eliperez-dev Sep 19, 2026
0aa0d11
Allow documented offline suite exclusions
eliperez-dev Sep 19, 2026
23add63
Harden geocoding worker durability and packaging
eliperez-dev Sep 19, 2026
7738e4c
Add disposable worker lifecycle acceptance tests
eliperez-dev Sep 19, 2026
415cf52
Defer rate-limited worker leases durably
eliperez-dev Sep 19, 2026
20aaf26
Document deferred worker outcomes
eliperez-dev Sep 19, 2026
313fc77
Add private APHIS investigation packet
eliperez-dev Sep 19, 2026
ba1b02b
Harden APHIS packet provenance and replay
eliperez-dev Sep 19, 2026
70f5a7c
Add exact source rights release gate
eliperez-dev Sep 19, 2026
b9fc955
test: seed exact rights for synthetic release fixtures
eliperez-dev Sep 19, 2026
ba787ce
Fail closed on APHIS profile mismatch
eliperez-dev Sep 19, 2026
9111a27
fix: apply private graph confidence filters
eliperez-dev Sep 19, 2026
d45edcf
Prove worker image and crash recovery lifecycle
eliperez-dev Sep 19, 2026
611166c
Prove source rights gates against disposable PostGIS
eliperez-dev Sep 19, 2026
dae9f27
ci: require disposable source rights proof
eliperez-dev Sep 19, 2026
a7f5580
test: preserve partial schema readiness fixture
eliperez-dev Sep 19, 2026
41d3d3e
test: align disposable fixtures with durable gates
eliperez-dev Sep 19, 2026
2a1103f
Prove preclaim restriction blocks worker work
eliperez-dev Sep 19, 2026
713eb3a
Document Sprint 01 integration evidence
eliperez-dev Sep 19, 2026
1e462b2
Clarify Sprint 01 gate evidence
eliperez-dev Sep 19, 2026
5570b6a
Make synthetic worker provider reachable from Linux containers
eliperez-dev Sep 19, 2026
a5358cc
chore: guard sprint02 private evidence boundary
eliperez-dev Sep 19, 2026
061e5d7
Refresh Italy private 853 candidate handoff
eliperez-dev Sep 19, 2026
db3761a
Clarify Italy retrieval timestamp audit
eliperez-dev Sep 19, 2026
fbf4e68
Activate France DGAL private candidate handoff
eliperez-dev Sep 19, 2026
ce064d3
docs: record reviewed country checkpoint
eliperez-dev Sep 19, 2026
05eec99
Add APHIS inspection capture provenance helper
eliperez-dev Sep 19, 2026
cd01a82
Preserve distinct APHIS inspection observations
eliperez-dev Sep 19, 2026
e946d15
Add APHIS original-page row lineage
eliperez-dev Sep 19, 2026
51df7f2
docs: record APHIS inspection acceptance
eliperez-dev Sep 19, 2026
03f4746
Integrate APHIS handoffs with exact artifact provenance
eliperez-dev Sep 19, 2026
4e9b886
Preserve APHIS handoff quarantine accounting
eliperez-dev Sep 19, 2026
98ac203
Clarify APHIS collision and evidence origin states
eliperez-dev Sep 19, 2026
0870ceb
Fail closed on APHIS handoff accounting and origin
eliperez-dev Sep 19, 2026
7a08758
Require complete APHIS origin metadata consensus
eliperez-dev Sep 19, 2026
8dc35b9
Verify APHIS original page lineage
eliperez-dev Sep 19, 2026
e3ce775
Record APHIS evidence consumer integration
eliperez-dev Sep 19, 2026
cb3d84a
Integrate approved APHIS lineage checkpoint
eliperez-dev Sep 19, 2026
2f6ae60
Add bounded FSIS route diagnostic
eliperez-dev Sep 19, 2026
2528847
Expose FSIS diagnostic safe metrics
eliperez-dev Sep 19, 2026
9e27338
Integrate approved FSIS acquisition guard
eliperez-dev Sep 21, 2026
c856c93
Add release coverage uncertainty panel
eliperez-dev Sep 19, 2026
d875369
fix coverage facet contract validation
eliperez-dev Sep 21, 2026
4105701
Integrate approved FSIS provenance fixes
eliperez-dev Sep 21, 2026
c9af8ea
Refresh Sprint 02 acceptance ledger
eliperez-dev Sep 21, 2026
56b2270
Integrate bounded Firefox FSIS acquisition
eliperez-dev Sep 21, 2026
8e52216
docs: establish canonical product readiness roadmap
eliperez-dev Sep 21, 2026
79c3889
docs: deprecate historical Denmark launcher
eliperez-dev Sep 21, 2026
73c8485
test: guard migration identity by full filename stem
eliperez-dev Sep 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 15 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,19 @@
target
data/
private/
.private/
**/.private/
staging/
.tmp/
tmp/
**/.env
**/.env.*
*.env
*.secret
*.secrets
**/*secret*
**/*credential*
**/*token*
Old scripts
Old CSVs
.git
Expand Down
71 changes: 71 additions & 0 deletions .github/workflows/fsis-route-diagnostic.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: FSIS route diagnostic

on:
workflow_dispatch:
push:
paths:
- .github/workflows/fsis-route-diagnostic.yml

permissions:
contents: read

jobs:
probe:
name: Probe official FSIS routes
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- uses: actions/checkout@v4
- name: Bounded no-body route probes
shell: bash
run: |
set +e
byte_cap=1048576
printf '%s\n' '## FSIS route diagnostic (safe metrics)' >> "$GITHUB_STEP_SUMMARY"
python - <<'PY' | while IFS=$'\t' read -r route url_host url_path url; do
import json
from pathlib import Path
from urllib.parse import urlsplit

config = json.loads(Path("pipeline/sources/us/fsis/config.json").read_text())
for route, key in (
("directory-by-name", "directory_by_name_url"),
("directory-by-number", "directory_by_number_url"),
("demographics", "demographics_url"),
):
url = config[key]
parsed = urlsplit(url)
print(f"{route}\t{parsed.hostname or '-'}\t{parsed.path or '/'}\t{url}")
PY
case "$route" in
directory-by-name) expected_path='/sites/default/files/media_file/documents/MPI_Directory_by_Establishment_Name.csv' ;;
directory-by-number) expected_path='/sites/default/files/media_file/documents/MPI_Directory_by_Establishment_Number.csv' ;;
demographics) expected_path='/sites/default/files/media_file/documents/Dataset_Establishment_Demographic_Data.csv' ;;
*) expected_path='' ;;
esac
if [[ "$url" != "https://www.fsis.usda.gov${expected_path}" || "$url_host" != 'www.fsis.usda.gov' || "$url_path" != "$expected_path" ]]; then
metric_line="route=$route config_shape=invalid curl_exit=not-run http_status=000 content_type=unknown bytes=0 final_host=-"
printf '%s\n' "$metric_line"
printf '%s\n' "- \`$metric_line\`" >> "$GITHUB_STEP_SUMMARY"
printf '::notice title=FSIS route diagnostic::%s\n' "$metric_line"
continue
fi
# The process substitution consumes at most byte_cap bytes and
# discards them; --max-filesize also protects Content-Length cases.
result="$(curl -sS -L --max-time 30 --max-filesize "$byte_cap" -o >(head -c "$byte_cap" >/dev/null) -w '%{http_code}|%{content_type}|%{size_download}|%{url_effective}' "$url" 2>/dev/null)"
curl_exit=$?
IFS='|' read -r http_status content_type bytes final_url <<< "$result"
final_host="-"
if [[ "$final_url" == https://* || "$final_url" == http://* ]]; then
final_host="$(python -c 'import sys; from urllib.parse import urlsplit; print(urlsplit(sys.argv[1]).hostname or "-")' "$final_url" 2>/dev/null)"
final_host="${final_host:-unknown}"
fi
safe_content_type="$(printf '%s' "${content_type:-unknown}" | tr -c '[:alnum:]._+/-' '_' | cut -c1-128)"
safe_final_host="$(printf '%s' "${final_host:--}" | tr -c '[:alnum:].:-' '_' | cut -c1-253)"
metric_line=$(printf 'route=%s requested_host=%s requested_path=%s curl_exit=%s http_status=%s content_type=%s bytes=%s final_host=%s' \
"$route" "$url_host" "$url_path" "$curl_exit" "${http_status:-000}" \
"$safe_content_type" "${bytes:-0}" "$safe_final_host")
printf '%s\n' "$metric_line"
printf '%s\n' "- \`$metric_line\`" >> "$GITHUB_STEP_SUMMARY"
printf '::notice title=FSIS route diagnostic::%s\n' "$metric_line"
done
62 changes: 53 additions & 9 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install psycopg[binary]
- run: pip install -r pipeline/requirements.txt
- name: Run standard tests in the canonical clean environment
shell: pwsh
run: ./pipeline/tests/run-standard.ps1
Expand All @@ -26,22 +26,66 @@ jobs:
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install psycopg[binary]
- name: Run Docker-backed API E2E tests
env:
UEC_RUN_E2E: '1'
run: |
python -m unittest pipeline.tests.e2e.test_public_api -v
python -m unittest pipeline.tests.e2e.test_community_api -v
python -m unittest pipeline.tests.e2e.test_seeded_api -v
- run: pip install -r pipeline/requirements.txt
- name: Verify private Docker build context
shell: pwsh
run: ./pipeline/tests/verify-docker-context.ps1
- name: Run Docker-backed API E2E tests (core and extended)
shell: pwsh
run: ./pipeline/tests/e2e/run-suite.ps1 -Suite full

backup-restore:
# The PostGIS image is Linux-only; Ubuntu includes PowerShell Core for the drill.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install -r pipeline/requirements.txt
- name: Run synthetic backup/restore gate
shell: pwsh
env:
UEC_RUN_E2E: '1'
run: ./pipeline/tests/e2e/backup-restore.ps1

static-jest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
cache: npm
cache-dependency-path: package-lock.json
- run: npm ci
- run: npm test

v2-gate-self-test:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Check V2 gate failure and success reporting
shell: pwsh
run: ./pipeline/tests/test-v2-gate.ps1

frontend:
runs-on: ubuntu-latest
defaults:
run:
working-directory: frontend
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
cache: npm
cache-dependency-path: frontend/package-lock.json
- run: npm ci
- run: npm run check
- run: npm test
- run: npm run lint
- run: npm run boundary
- run: npm run build
- run: npx playwright install --with-deps chromium firefox webkit
- run: npx playwright test tests/e2e/fixture-platform.spec.ts tests/e2e/local-safety.spec.ts tests/e2e/private-preview.spec.ts --project=chromium --project=firefox --project=webkit --workers=2
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
/target/
/.tmp/
/node_modules/
/snapshots/
/static/v2-preview/
/.private/
/\.shuttle*
/Secrets*.toml
__pycache__/
/data/raw/
/data/restricted/
/data/raw/**/*.xml
/data/raw/**/*.csv
/data/raw/**/*.xlsx
Expand All @@ -17,3 +21,4 @@ __pycache__/
!/data/raw/**/
!/data/raw/**/metadata.json
!/data/reports/.gitkeep
/data/graph-rehearsal/
18 changes: 16 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,26 @@ The current public application is a Rust/Axum backend in `src/` with a vanilla J

## Build, Test, and Development Commands

- `cargo run` starts the current application on port 8000.
- `npm test` runs the Jest suite.
- `python scripts/dev.py --help` is the preferred V2 developer entrypoint; use
`python scripts/dev.py --json doctor` before starting local services.
- Run `npm ci` once at the repository root before `npm test`; `npm test` runs
the legacy/static Jest suite. The Svelte preview has separate dependencies:
run `npm --prefix frontend ci` before using its commands.
- `cargo run` starts the current application on port 8000 when its configured
database is available; `python scripts/dev.py up` is the reproducible local
V2 setup path.
- `npm run test:coverage` runs Jest with coverage.
- `powershell -ExecutionPolicy Bypass -File pipeline/scripts/maintenance/build-legacy-manifest.ps1` regenerates the legacy file inventory and SHA-256 manifest in `data/manifests/`.
- `python pipeline/scripts/diagnostics/inspect-denmark-smiley.py static_data/dk/Smiley_xml.xml` inspects the Danish XML without transforming it.

For a clean database-backed validation, use
`pwsh -NoProfile -ExecutionPolicy Bypass -File pipeline/tests/run-standard.ps1`.
The persistent `uec-local-v2` database rejects changed migration checksums on
purpose. If local setup reports `migration checksum changed after application`,
the named volume belongs to an older checkout; preserve it unless it is known
to be disposable, and follow the reset/troubleshooting instructions in
`docs/development.md` rather than editing migration history.

## Data Credibility and Provenance

Start with the [ethics summary](docs/ETHICS-SUMMARY.md) for orientation; it does not replace the full policy. Visitor-data handling, legal demands, and publication authority also follow ETHICS.md sections 11–14. Do not claim no logging, legal immunity, a backup reviewer, or enforced approval controls without evidence. Pause new publication needing human approval if no authorized reviewer is available; compliant acquisition and eligible existing releases may continue, and urgent suppression follows policy. Assess preservation obligations before exceptional deletion when a legal demand is involved; escalate to the responsible maintainer rather than making novel legal judgments.
Expand Down
Loading
Loading