feat: honor temporal read context

This commit is contained in:
2026-08-05 00:03:32 +02:00
parent f7993786df
commit c9bd2bfab8
4 changed files with 75 additions and 4 deletions
+1 -1
View File
@@ -68,7 +68,7 @@ manifest = ModuleManifest(
id="decisions.formal-outcome",
title="Formal institutional Decisions",
summary="Reconstruct authority, evidence, reasoning, outcome, effects, and review history.",
body="Decisions preserves immutable formal outcomes. Corrections and revocations create linked revisions; requested and observed effects remain distinct for reconciliation.",
body="Decisions preserves immutable formal outcomes. Corrections and revocations create linked revisions; requested and observed effects remain distinct for reconciliation. List and unversioned detail reads follow the titlebar valid-time and recorded-time selection; exact revision references remain exact and current authorization is unchanged.",
layer="configured",
documentation_types=("admin", "user"),
audience=("user", "operator", "module_admin", "auditor"),
+3 -2
View File
@@ -12,6 +12,7 @@ from govoplan_core.core.institutional import (
TemporalRevision,
revise_formal_decision,
)
from govoplan_core.db.temporal import apply_temporal_revision_filter
from govoplan_decisions.backend.db.models import FormalDecisionRevision
@@ -37,7 +38,7 @@ class SqlDecisionRegistry:
FormalDecisionRevision.decision_id == reference.object_id,
)
if reference.version is None:
query = query.filter(FormalDecisionRevision.superseded_at.is_(None))
query = apply_temporal_revision_filter(query, FormalDecisionRevision)
else:
query = query.filter(FormalDecisionRevision.revision == reference.version)
row = query.order_by(FormalDecisionRevision.recorded_at.desc()).first()
@@ -142,8 +143,8 @@ def list_decisions(
raise DecisionStoreError("Decision list limit must be between 1 and 200.")
query = session.query(FormalDecisionRevision).filter(
FormalDecisionRevision.tenant_id == tenant_id,
FormalDecisionRevision.superseded_at.is_(None),
)
query = apply_temporal_revision_filter(query, FormalDecisionRevision)
if state:
query = query.filter(FormalDecisionRevision.state == state)
if decision_type: