Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
4a6b584
feat(spp_cel_dci_bridge): scaffold registry-agnostic CEL <-> DCI bridge
gonzalesedwin1123 May 13, 2026
b959025
feat(spp_cel_dci_bridge): extend data.provider and cel.variable for DCI
gonzalesedwin1123 May 13, 2026
85d36b8
feat(spp_cel_dci_bridge): add DCI dispatcher skeleton
gonzalesedwin1123 May 13, 2026
066ee8b
feat(spp_cel_dci_bridge): implement DR registry-type handler
gonzalesedwin1123 May 13, 2026
db6c746
feat(spp_cel_dci_bridge): override cache manager to route DCI externals
gonzalesedwin1123 May 13, 2026
3f67ffb
feat(spp_cel_dci_bridge): implement external_failure_policy
gonzalesedwin1123 May 13, 2026
9162a53
feat(spp_cel_dci_bridge): add per-subject DCI fetch audit log
gonzalesedwin1123 May 13, 2026
2466eba
fix(spp_cel_domain): handle boolean RHS in metric SQL fast path
gonzalesedwin1123 May 13, 2026
73e5092
feat(spp_cel_dci_bridge): end-to-end test of the demo flow
gonzalesedwin1123 May 13, 2026
cb6aa2c
feat(spp_cel_dci_bridge): add CRVS and IBR handlers + registry_type n…
gonzalesedwin1123 May 13, 2026
24f1ed6
feat(spp_dci_openg2p): permanent OpenG2P DCI preset (config-only)
gonzalesedwin1123 May 13, 2026
ac35f1c
docs(spp_cel_dci_bridge,spp_dci_openg2p): readmes + lint fixes
gonzalesedwin1123 May 13, 2026
a28831b
fix(spp_cel_dci_bridge): preserve operator attribution in DCI audit
gonzalesedwin1123 May 13, 2026
291816a
fix(spp_cel_dci_bridge): surface broken DCI integration via DCIConfig…
gonzalesedwin1123 May 13, 2026
9a7e6a7
fix(spp_dci_openg2p): post_init_hook re-asserts DCI binding on upgrade
gonzalesedwin1123 May 13, 2026
0f90f5c
fix(spp_cel_dci_bridge): register menuitems for DCI fetch audit
gonzalesedwin1123 May 13, 2026
a6ba0b7
fix(spp_cel_dci_bridge): dedicate notebook page for DCI integration o…
gonzalesedwin1123 May 13, 2026
ed18796
fix(spp_cel_dci_bridge): gate CEL variable DCI fields on is_dci_backed
gonzalesedwin1123 May 13, 2026
7ee4903
fix(spp_cel_dci_bridge): subject Reference field on DCI fetch audit
gonzalesedwin1123 May 13, 2026
1e5ecbd
chore(spp_cel_dci_bridge): ruff-format + drop redundant field string
gonzalesedwin1123 May 13, 2026
58ca1cb
perf(spp_cel_dci_bridge): use DISTINCT ON for last_known SQL lookup
gonzalesedwin1123 May 13, 2026
54d7e7d
chore(spp_cel_dci_bridge,spp_dci_openg2p): fix pre-commit failures fr…
gonzalesedwin1123 May 13, 2026
1281efa
test(spp_cel_dci_bridge,spp_dci_openg2p): close codecov gaps on error…
gonzalesedwin1123 May 13, 2026
306916a
fix(spp_cel_dci_bridge): drop redundant string= on external_failure_p…
gonzalesedwin1123 May 13, 2026
1d4cb97
fix(spp_cel_dci_bridge,spp_dci_openg2p): drop reimported patch (W0404)
gonzalesedwin1123 May 14, 2026
ce1936a
feat(spp_dci_openg2p): OpenG2P adapter for FR-as-DR demo
gonzalesedwin1123 May 14, 2026
013308f
feat(spp_dci_openg2p): seed UIN vocabulary code for the registrant form
gonzalesedwin1123 May 14, 2026
cc1853f
fix(spp_cel_dci_bridge): pre-warm cache before program-level CEL elig…
gonzalesedwin1123 May 14, 2026
e822163
fix(spp_cel_domain): guard against legacy spp.indicator.evaluate missing
gonzalesedwin1123 May 14, 2026
beba099
fix(spp_dci_openg2p): preset must activate the var_has_disability var…
gonzalesedwin1123 May 14, 2026
8e1c80a
refactor(spp_dci_openg2p): retarget preset to OpenG2P Social Registry…
gonzalesedwin1123 May 14, 2026
d0f1e95
feat(spp_dci_openg2p): replace has_disability override with SR variables
gonzalesedwin1123 May 14, 2026
9b0b6be
feat(spp_dci_server_disability): real /disability/registry/sync/searc…
gonzalesedwin1123 May 14, 2026
52fb056
feat(spp_dci_openspp_dr): SP-side preset for an OpenSPP-DR instance
gonzalesedwin1123 May 14, 2026
56ee2f3
chore(docker): add DR-instance overlay compose for federated demo
gonzalesedwin1123 May 14, 2026
53d0c8e
chore(docker): make DR compose standalone, not an overlay
gonzalesedwin1123 May 14, 2026
aa8eb7d
fix(spp_dci_openspp_dr): drop colliding UIN seed; install no longer f…
gonzalesedwin1123 May 14, 2026
78782e7
fix(spp_dci_server_disability): read real fields, not stale field names
gonzalesedwin1123 May 14, 2026
816659a
fix(spp_dci_openspp_dr): correct DR endpoint path — root_path is /dci…
gonzalesedwin1123 May 14, 2026
cd4ae47
fix(spp_cel_dci_bridge): surface vendor field on data source views
gonzalesedwin1123 May 14, 2026
7195b82
fix(spp_dci_server_disability): sudo() registry lookups for public-us…
gonzalesedwin1123 May 14, 2026
96868aa
feat(spp_dci_openg2p): rebind is_poor to income_level; park dependent…
gonzalesedwin1123 May 14, 2026
2ce3b83
docs: bring all federated-demo docs in line with the shipped implemen…
gonzalesedwin1123 May 14, 2026
af64ddb
chore: add pyproject.toml stubs for the two new federated-demo modules
gonzalesedwin1123 May 14, 2026
9d688a5
demo(scripts): one-shot seed for SPDCI federated dry-run
gonzalesedwin1123 May 15, 2026
b28b419
chore(demo): rename seed script to setup_spdci_demo.py
gonzalesedwin1123 May 15, 2026
c363af8
demo(scripts): extend SPDCI seed to all 15 OpenG2P SR personas
gonzalesedwin1123 May 15, 2026
024698d
demo(scripts): rename in-place + auto-enroll into demo program
gonzalesedwin1123 May 15, 2026
fc37f77
demo(scripts): add reset script for repeated SPDCI demo runs
gonzalesedwin1123 May 15, 2026
503e7fd
fix(spp_cel_domain): AND all metric SQL overrides on compound express…
gonzalesedwin1123 May 15, 2026
4fc8544
docs(demo): add SPDCI demo briefing sheet for the presentation
gonzalesedwin1123 May 15, 2026
ef2049d
chore: pre-commit autofixes + linter compliance pass on branch
gonzalesedwin1123 May 15, 2026
166155e
fix(spp_dci_server_disability): keep nosemgrep marker on the sudo() line
gonzalesedwin1123 May 15, 2026
84328e8
fix(lint): clear remaining pre-commit + Semgrep OSS findings
gonzalesedwin1123 May 15, 2026
f49a443
docs(demo): add OpenG2P demo data CSV with 15 personas
gonzalesedwin1123 May 18, 2026
3bca0cf
docs(demo): trim OpenG2P demo CSV to 8 identity/demographic columns
gonzalesedwin1123 May 18, 2026
27aecd0
docs(demo): walkthrough of CEL-to-DCI execution for presentation
gonzalesedwin1123 May 18, 2026
cdbce38
feat(spp_dci_openg2p): add SR-import wizard for operator-driven regis…
gonzalesedwin1123 May 18, 2026
2983985
refactor(spp_dci_openg2p): relabel user-facing strings from "OpenG2P"…
gonzalesedwin1123 May 18, 2026
50c9b59
fix(spp_dci_openg2p): use canonical registry_type URI in SR-import wi…
gonzalesedwin1123 May 18, 2026
02ea993
docs(demo): add SPDCI demo modules + reset procedure reference
gonzalesedwin1123 May 18, 2026
5ba1ec4
docs(demo): scope reset procedure to SP only
gonzalesedwin1123 May 18, 2026
8dfe9f5
feat(spp_dci_server_disability): tint navbar and apps sidebar green
gonzalesedwin1123 May 19, 2026
6459fd0
docs(demo): add scene-by-scene live-demo flow runbook
gonzalesedwin1123 May 19, 2026
ee9db94
fix(spp_dci_server_disability): cover remaining blue selectors in DR …
gonzalesedwin1123 May 19, 2026
55f2440
fix(spp_dci_openg2p): align stale tests with canonical registry_type URI
gonzalesedwin1123 May 19, 2026
be01ef9
feat(spp_dci_server_disability): seed DCI auth-bypass params on first…
gonzalesedwin1123 May 19, 2026
0a5f269
feat: SP→DR mirror via DCI register-individual, with SR-disability dr…
gonzalesedwin1123 May 19, 2026
5257a50
docs(demo): add live SR income-level snapshot for IND-NSR-0001..0015
gonzalesedwin1123 May 22, 2026
e288448
fix(spp_cr_type_assign_program): scope duplicate-assignment conflict …
gonzalesedwin1123 May 22, 2026
39332cf
fix(spp_dci_client_crvs): route verify_birth and check_death through …
gonzalesedwin1123 May 26, 2026
517ba6b
feat(spp_cel_dci_bridge): support CRVS check_death as a CEL variable …
gonzalesedwin1123 May 26, 2026
9bbadbc
docs(demo): retarget SR snapshot to the 10 OpenG2P/OpenCRVS-aligned UINs
gonzalesedwin1123 May 26, 2026
ec440a4
docs(demo): post-recording SPDCI snapshot — three registries, ten UINs
gonzalesedwin1123 May 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 113 additions & 0 deletions docker-compose.dr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# OpenSPP-DR standalone docker-compose
#
# Self-contained file for the second OpenSPP container that plays the
# Disability Registry role in the federated demo topology (ADR-024).
# The SP side keeps its own lifecycle through `./spp` against
# docker-compose.yml — this file touches none of those services.
#
# Networking: the DR container joins the SP project's existing Docker
# network (`openspp2_openspp` by default) as an EXTERNAL network so the
# two containers can resolve each other by service name. Make sure the
# SP is up (`./spp start`) before launching the DR — the external
# network must exist.
#
# Database: shares the SP's `db` container by joining the same network
# and using DB_HOST=db, but uses a distinct database name (`openspp_dr`)
# so neither side sees the other's records.
#
# Usage:
#
# # Prereq: SP is up (network + db exist)
# ./spp start
#
# # Launch DR
# docker compose -f docker-compose.dr.yml up -d
#
# # Access:
# # SP UI (existing): determined by `./spp url` (ui=8069, dev=dynamic)
# # DR UI (new): http://localhost:8070 (admin/admin)
# # SP -> DR in-network: http://openspp-dr:8069
#
# # Logs / shell / stop
# docker compose -f docker-compose.dr.yml logs -f openspp-dr
# docker compose -f docker-compose.dr.yml exec openspp-dr odoo shell -d openspp_dr
# docker compose -f docker-compose.dr.yml down
#
# # Wipe DR data (drops openspp_dr filestore volume; the SP's openspp
# # database in the shared db container is untouched, but you'll want
# # to manually DROP DATABASE openspp_dr in psql for a clean re-init).
# docker compose -f docker-compose.dr.yml down -v
#
# Module wiring:
# - SP container: install `spp_dci_openspp_dr` + `spp_dci_openg2p`
# via the SP's ODOO_INIT_MODULES (set before `./spp start`).
# - DR container: defaults to `spp_dci_server_disability` (overridable
# via ODOO_DR_INIT_MODULES).
#
# Network-name override:
# If your SP project name isn't `openspp2` (e.g. you cloned into a
# differently-named directory), set OPENSPP_NETWORK before launching:
# OPENSPP_NETWORK=<project>_openspp docker compose -f docker-compose.dr.yml up -d

name: openspp-dr

services:
openspp-dr:
image: openspp-dev
# No `build:` here — relies on `./spp start` (or `./spp build`)
# having produced the openspp-dev image first. This keeps the DR
# standalone but avoids duplicating build state.
container_name: openspp-dr
hostname: openspp-dr
environment:
# Connect to the SP project's db container by service-name DNS
# resolution on the shared network.
DB_HOST: db
DB_PORT: "5432"
DB_USER: odoo
DB_PASSWORD: odoo
DB_NAME: ${ODOO_DR_DB_NAME:-openspp_dr}
DB_FILTER: "^${ODOO_DR_DB_NAME:-openspp_dr}$$"
LIST_DB: "False"

ODOO_ADMIN_PASSWD: admin

ODOO_WORKERS: "0"
ODOO_CRON_THREADS: "0"

# The DR-side server module. Override to install richer demo
# registrant data alongside the server endpoint.
ODOO_INIT_MODULES: "${ODOO_DR_INIT_MODULES:-spp_dci_server_disability}"
ODOO_UPDATE_MODULES: "${ODOO_DR_UPDATE_MODULES:-}"

LOG_LEVEL: info
PROXY_MODE: "False"
ports:
# Host 8070 → container 8069. SP-side OpenSPPDRService talks to
# http://openspp-dr:8069 over the shared Docker network; the
# host port is only for the operator's browser.
- "8070:8069"
volumes:
- .:/mnt/extra-addons/openspp:ro,z
- openspp_dr_data:/var/lib/odoo
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8069/web/health"]
interval: 10s
timeout: 10s
start_period: 90s
retries: 10
networks:
- sp-shared

volumes:
openspp_dr_data:

networks:
# Join the SP project's existing network so we can reach the SP's
# `db` container and the SP's openspp container can reach us by name.
# The default name `openspp2_openspp` reflects the SP project's
# default name (derived from the OpenSPP2 directory) — override via
# OPENSPP_NETWORK if your SP project is named differently.
sp-shared:
name: ${OPENSPP_NETWORK:-openspp2_openspp}
external: true
12 changes: 12 additions & 0 deletions scripts/demo/Registrants.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
| # | UIN | Name | income_level | has_disability (DR) | In CRVS death? | ELIGIBLE? |
| --- | ------------ | -------------- | ------------ | ------------------- | -------------- | --------- |
| 1 | `8579520716` | Tomasz Novak | low | **True** | ✅ yes | No |
| 2 | `3253492082` | Sofia Petrovic | low | **True** | — | ✅ yes |
| 3 | `9475380352` | Daniel Kauri | low | **True** | ✅ yes | No. |
| 4 | `9726938790` | Leila Haddar | low | False | — | No. |
| 5 | `6985017629` | Malik Adeyemi | medium | False | — | No. |
| 6 | `2140239450` | Priya Menon | medium | False | — | No. |
| 7 | `2195415820` | Omar El-Hadi | low | **True** | — | ✅ yes. |
| 8 | `4364503413` | Aiko Tanabe | high | False | — | No. |
| 9 | `3184198562` | Rafael Duarte | low | False | ✅ yes | No. |
| 10 | `8794017267` | Elna Voss | low | **True** | — | ✅ yes. |
Loading
Loading