informed-decision/workplans/INFD-WP-0004-comfortable-decision-review.md
tegwick 98c8de078e Ask Flex Auth list, not read, for each overview row (INFD-WP-0004-T03)
The overview now requests the new list action and its rows carry only the
memo id, version, question, live approval status and the person's own
responses without notes. Opening a memo still asks read; every act asks
its own action. The fixture Flex Auth package admits list under a
re-derived pin. Not deployable until flex-auth answers INFD-IN-0008.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 359683@bnt-lap001
Assistant-Session: eebdc939-7a9b-4e50-9d39-c8437e8a14ec
2026-09-21 22:53:31 +02:00

4.2 KiB

id type title domain repo status owner topic_slug created updated related origin origin_ref state_hub_workstream_id
INFD-WP-0004 workplan Comfortable decision review — a `list` action for the overview infotech informed-decision active claude netkingdom 2026-09-21 2026-09-21
INFD-WP-0003
INFD-IN-0005
INFD-IN-0008
demand founder 2026-09-21: 'We should be able to review comfortably though.' 2a57162a-85ad-5fd6-87d5-1e89ae2e0782

Comfortable decision review

The INFD-WP-0003 overview is live, but in production every row shows "The permission service refused access", even after a fresh sign-in. Each row asks Flex Auth for read. The served informed-decision.compact-sitting v2 package gates read with a bar designed for binding:

  • The rule requires assurance.at to be at most 900 seconds old. KeyCape carries earlier authentication timestamps forward (INFD-IN-0005), so a browsing session rarely meets it.
  • The package does not name the three SECRETS-WP-0010-T03-* memos at all.

The founder wants to be able to review decisions comfortably. The plan is to split seeing your decisions from reviewing one for binding:

  • Add a new consumer action, list, with limited disclosure. It has a comfortable identity bar, and flex-auth admits it.
  • read and every act keep their strict bar.

Establish why today's rows are refused

id: INFD-WP-0004-T01
status: done
priority: high
state_hub_task_id: "513e91cf-6063-5a39-9f4d-af3976bb29a8"

Waiting on the operator's read-only query of the live policy_observations: auth_age_s, groups, level and methods for the latest checks. If the age is over 900, INFD-IN-0005 is confirmed as the cause for the eight sitting memos. If a group, level or method differs from the rule, that is a separate identity regression and needs fixing regardless of list. Record the finding under docs/evidence/.

Finding (2026-09-21): only freshness fails. auth_age_at_check_s was 1744 against 900, and groups, sources, level and methods all match. See docs/evidence/2026-09-21-overview-read-refusal.json.

Request the list policy from flex-auth

id: INFD-WP-0004-T02
status: wait
priority: high
state_hub_task_id: "3d5f51ac-c226-5489-bfb6-d5829c70e6f6"

The request is drafted in docs/flex-auth-request-list-action.md and recorded as INFD-IN-0008, owned by flex-auth. Sent 2026-09-21 to the flex-auth inbox (message a7b9ef3b-f95c-4c50-bfc5-7628d16881f6); waiting on flex-auth. Done when flex-auth publishes a package, version and digest that answers list, with fixtures.

Consumer side: list action and limited-disclosure overview

id: INFD-WP-0004-T03
status: done
priority: high
state_hub_task_id: "e13ef7d2-bac0-5e2b-930d-4368e77bf1cb"
  • Add list to policy.ACTIONS and to docs/flex-auth-review-contract.md.
  • The overview asks list per row instead of read. It renders only the memo id and version, the question, the live engine status, and the person's own responses (verb, version, time and submission state; no notes).
  • The review page keeps read, and every act keeps its own action.
  • Tests: list allowed while read is denied still shows the rows, and opening one is still refused; a list deny redacts the row; no brief, packet or notes leak on the home page.

This task can be built and tested against fixtures before T02 lands, but it must not be deployed before T02. The live v2 package denies list, so deploying early would change nothing visible.

Done 2026-09-21: the source is ready and not deployed. There are 436 tests. The fixture Flex Auth package adds list, and its re-derived pin has digest sha256:f45e366d…. Chromium passes 13 of 13 through the real Flex Auth.

Admit and roll out

id: INFD-WP-0004-T04
status: wait
priority: high
state_hub_task_id: "65d6dd6e-208a-54ee-93c0-40b6ab1d8adf"

After T02, update deploy/sitting-admission.json with the new package, version and digest. The operator then applies the configuration and the image built from T03. Verify that the overview shows all eleven memos without a fresh MFA, that opening a memo still enforces the strict read rule, and record the rollout in docs/evidence/.