GovOPlaN Records

Repository type: module (domain).

govoplan-records owns GovOPlaN's native eAkte boundary: versioned file plans and record classes, stable record identities, immutable record revisions, volumes, exact filing references, and record chronology. Source modules retain authority over their objects and bytes.

The first working vertical slice includes PostgreSQL/SQLite models and an Alembic migration, tenant-scoped APIs, optimistic concurrency and idempotent filing, temporal reads, search registration, a full-height Records workspace, provider-neutral filing from Files, Cases, Forms Runtime, and Decisions, and a governed close/retention/hold/appraisal/disposition/transfer lifecycle.

The privacy.dsar.records capability exports bounded record and lifecycle metadata from an explicit record or authoritative source linkage. Canonical account, identity, and membership selectors return minimized staff accountability attribution; they do not turn a staff action into record-subject ownership. Immutable eAkte evidence is retained, while the current record fact is routed to manual lifecycle review. Source content, snapshots, opaque contexts, payloads, hashes, replay keys, and archive manifests/receipts are not exported by Records.

Initial Ownership

  • file plans
  • records classification
  • retention schedule application
  • disposal holds
  • archive handoff state
  • legal record identity

Boundaries

This module does not own:

  • document binary storage
  • DMS editing workflows
  • generic privacy policy engine

Detailed boundary notes are in docs/RECORDS_DOMAIN_BOUNDARY.md.

Integrations

Implemented optional integrations:

  • files
  • cases
  • forms runtime
  • decisions
  • approvals
  • audit
  • search

Planned optional integrations include:

  • Campaigns, Postbox, and Reporting
  • target-tested DMS/archive providers
  • policy
  • transparency

Current Boundary

The current kernel supports planned/open records, exact filing, closure, retention calculation, holds, appraisal, independent disposition approval, archive-neutral packaging, recovery evidence, and a clearly marked transfer simulation. The simulation never claims archival custody. Restricted per-record grants, real target conformance, destructive execution, and real archive effects remain explicit later work packages.

Reference Journey

The executable resident-parking-permit fixture proves equivalent assisted and authenticated digital eAkten. It files the exact form, attachment, case and representation, decision, delivery, and correction revisions; preserves authority, purpose, policy, chronology, and custody evidence; exercises hold and independent approval; and verifies search, temporal reconstruction, and source/package integrity after a SQLite backup/restore round trip. The Records workspace keeps the selected recordId in the URL so an authorized actor can resume the same record and inspect the complete evidence chain.

The detailed target and implementation sequence are documented in docs/EAKTE_ARCHITECTURE.md.

Development Install

From the workspace:

cd /mnt/DATA/git/govoplan-records
/mnt/DATA/git/govoplan/.venv/bin/python -m pip install -e .

Focused manifest verification:

cd /mnt/DATA/git/govoplan-records
PYTHONPATH=src /mnt/DATA/git/govoplan/.venv/bin/python -m unittest discover -s tests

Gitea Workflow

Issue templates are installed under .gitea/, and the shared label taxonomy is copied to docs/gitea-labels.json with the module label module/records.

From the core checkout, labels can be synced once a local GITEA_TOKEN is available:

cd /mnt/DATA/git/govoplan-core
/mnt/DATA/git/govoplan/tools/gitea/gitea-sync-labels.py --root /mnt/DATA/git/govoplan-records --apply
S
Description
GovOPlaN records module for records management, file plans, classification, retention schedules, disposal holds, archive handoff, and legal records evidence.
Readme AGPL-3.0
617 KiB
Languages
Python 76.9%
TypeScript 21%
CSS 2.1%