|
|
||
|---|---|---|
| src/idea192_civicpulse_offline_first | ||
| tests | ||
| .gitignore | ||
| AGENTS.md | ||
| README.md | ||
| pyproject.toml | ||
| test.sh | ||
README.md
CivicPulse
CivicPulse is an offline-first coalition intelligence and policy provenance core for community organizers, unions, tenant groups, and campaign coalitions.
It focuses on three hard problems:
- Deterministic coordination when teams work disconnected.
- Auditable provenance for policy drafts, endorsements, and evidence.
- Privacy-preserving sharing between organizations.
What is implemented
- SQLite-backed immutable provenance ledger.
- Coalition graph objects for organizations, contracts, proposals, endorsements, briefs, tasks, and shifts.
- Deterministic sync helpers for replica reconciliation.
- Role-based privacy redaction for shared policy briefs.
- Graph-of-contracts registry for schemas and adapters.
- CSV ingestion adapter for volunteer data.
- CLI for audit and brief-sharing inspection.
Repository layout
src/idea192_civicpulse_offline_first/core package.tests/pytest coverage for provenance, privacy, sync, and replay behavior.test.shclean verification entrypoint.AGENTS.mdcontributor guidance for future agents.
Running
bash test.sh
Or individually:
python3 -m pytest -q
python3 -m build
CLI
civicpulse audit <entity_id>
civicpulse share-brief <brief_id> <role>
Design notes
- Events are append-only and hashed for provenance.
- Sync uses content-addressed event exchange, so local replicas can converge without a central admin.
- Privacy defaults favor redaction, with minimal-signal sharing for public roles.
- All stateful actions are recorded in the ledger before being surfaced through the service layer.
Packaging
The package name is idea192_civicpulse_offline_first, and this README is wired into pyproject.toml as the project long description.