Task ID or area
GH-C102 (state / tests) — shared production-scale coordination fixture
Technical direction
Core control-plane hardening
Intent
I want to claim an existing task
Summary
The shared production-scale coordination fixture
(tests/fixtures/control_plane/coordination_production_scale_v0.json plus
tests/control_plane_ts/production_scale_coordination_fixture.ts) currently
only generates approvals. Every broad, goal-bound user gate that qualifies
as a standing decision receipt carries decision_outcome: "approve". Nothing in
the envelope produces an explicitly rejected decision, so no provider
conformance arm ever has to prove that a refusal stays recorded without becoming
active authority.
The accepted decision-scope/standing-authority contract makes that distinction
load-bearing: projectStandingDecisions keeps a rejected gate as a
standing_decision_receipt_v0 entry with active: false, counts it under
inactive_count, retains it during archive exactly like an approval, and never
lets it raise active_count (only decision_outcome === "approve" does).
tests/control_plane_ts/standing_decision.test.ts covers the pure projection,
but the shared multi-provider fixture does not carry the shape.
This slice adds that one invariant to the shared fixture and runs it through
every affected provider conformance arm.
Proposed scope
In scope:
- envelope: a bounded
rejected_standing_decision_count band of broad,
goal-bound, global_gate user gates whose decision_outcome is "reject",
scoped under a second decision kind so the refusal keeps its own decision
identity and does not merge into the approved scope;
- shared generator: expose
expected_inactive_standing_decision_count, extend
expected_standing_user_decision_count (archive-retained standing receipts
now include refusals), and derive expected_user_archive_count from the
retained count instead of a fixed - 5 shortcut;
- provider conformance: assert
inactive_count and per-entry
active === (outcome === "approve") in
tests/control_plane_ts/authority_store_conformance.ts, so file, SQLite,
NoKV JSON-lines, NoKV single-envelope, and PostgreSQL arms all run the
dimension;
- one independent mutation/negative assertion: a rejection is a receipt, only an
explicit approval activates the scope, and dropping the typed
decision_scope leaves no standing entry at all.
Out of scope:
- changing the standing-decision predicate or projection semantics;
- weakening any existing dimension: the archive retention count grows because
refusals are genuinely retained, and the moved-row budget is recomputed rather
than relaxed;
- new providers, live provider runs, or production code changes.
Intended base branch
main
Relevant files or commands
tests/fixtures/control_plane/coordination_production_scale_v0.json
tests/control_plane_ts/production_scale_coordination_fixture.ts
tests/control_plane_ts/authority_store_conformance.ts
loopx/control_plane/todos/standing_decision.ts
npm run test:control-plane
loopx check --scan-path tests/fixtures/control_plane --scan-path tests/control_plane_ts --scan-path docs/development/testing-and-quality.md
Validation plan
npm run test:control-plane
npm run typecheck:control-plane
python3 -m pytest -q tests/control_plane/test_todo_semantic_kernel.py tests/control_plane/test_coordination_runtime_shadow_adapter.py
loopx check --scan-path tests/fixtures/control_plane --scan-path tests/control_plane_ts --scan-path docs/development/testing-and-quality.md
Public/private boundary
Task ID or area
GH-C102 (state / tests) — shared production-scale coordination fixture
Technical direction
Core control-plane hardening
Intent
I want to claim an existing task
Summary
The shared production-scale coordination fixture
(
tests/fixtures/control_plane/coordination_production_scale_v0.jsonplustests/control_plane_ts/production_scale_coordination_fixture.ts) currentlyonly generates approvals. Every broad, goal-bound user gate that qualifies
as a standing decision receipt carries
decision_outcome: "approve". Nothing inthe envelope produces an explicitly rejected decision, so no provider
conformance arm ever has to prove that a refusal stays recorded without becoming
active authority.
The accepted decision-scope/standing-authority contract makes that distinction
load-bearing:
projectStandingDecisionskeeps a rejected gate as astanding_decision_receipt_v0entry withactive: false, counts it underinactive_count, retains it during archive exactly like an approval, and neverlets it raise
active_count(onlydecision_outcome === "approve"does).tests/control_plane_ts/standing_decision.test.tscovers the pure projection,but the shared multi-provider fixture does not carry the shape.
This slice adds that one invariant to the shared fixture and runs it through
every affected provider conformance arm.
Proposed scope
In scope:
rejected_standing_decision_countband of broad,goal-bound,
global_gateuser gates whosedecision_outcomeis"reject",scoped under a second decision kind so the refusal keeps its own decision
identity and does not merge into the approved scope;
expected_inactive_standing_decision_count, extendexpected_standing_user_decision_count(archive-retained standing receiptsnow include refusals), and derive
expected_user_archive_countfrom theretained count instead of a fixed
- 5shortcut;inactive_countand per-entryactive === (outcome === "approve")intests/control_plane_ts/authority_store_conformance.ts, so file, SQLite,NoKV JSON-lines, NoKV single-envelope, and PostgreSQL arms all run the
dimension;
explicit approval activates the scope, and dropping the typed
decision_scopeleaves no standing entry at all.Out of scope:
refusals are genuinely retained, and the moved-row budget is recomputed rather
than relaxed;
Intended base branch
main
Relevant files or commands
tests/fixtures/control_plane/coordination_production_scale_v0.jsontests/control_plane_ts/production_scale_coordination_fixture.tstests/control_plane_ts/authority_store_conformance.tsloopx/control_plane/todos/standing_decision.tsnpm run test:control-planeloopx check --scan-path tests/fixtures/control_plane --scan-path tests/control_plane_ts --scan-path docs/development/testing-and-quality.mdValidation plan
npm run test:control-planenpm run typecheck:control-planepython3 -m pytest -q tests/control_plane/test_todo_semantic_kernel.py tests/control_plane/test_coordination_runtime_shadow_adapter.pyloopx check --scan-path tests/fixtures/control_plane --scan-path tests/control_plane_ts --scan-path docs/development/testing-and-quality.mdPublic/private boundary