57 lines
1.7 KiB
Markdown
57 lines
1.7 KiB
Markdown
# 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.sh` clean verification entrypoint.
|
|
- `AGENTS.md` contributor guidance for future agents.
|
|
|
|
## Running
|
|
|
|
```bash
|
|
bash test.sh
|
|
```
|
|
|
|
Or individually:
|
|
|
|
```bash
|
|
python3 -m pytest -q
|
|
python3 -m build
|
|
```
|
|
|
|
## CLI
|
|
|
|
```bash
|
|
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.
|