Land Generative UI U5: form actions with idempotent ledger and confirm-card gating (documents #71, backend #155, ui #46/#47, frontend #56) #367

Merged
weichen merged 8 commits from feature/generative-ui-u5 into main 2026-10-11 14:39:47 +00:00
Owner

Why: The user approved the U5 action scope (A client-local fully open; B command-binding machinery with an empty first whitelist; C plugin-own writes via KV/task ledger; D business writes and DangerHigh-direct closed; confirm UX reuses the inline card). This lands the action half of the loop: migration v24 idempotent ledger keyed (owner, surface, action, requestId) with params-hash; SubmitAction as the single choke point (plugin activation, current-revision, action whitelist); dispatch through the command bus so DangerHigh lands on the existing inline confirm card - the endpoint does not even bind a confirmed field; generative-ui.submit is button-only (not exposed to the model) and stores form data in the plugin KV ledger; the catalog rejects unknown action ids at present time; frontend drafts travel only inside the action payload with an in-flight double-click guard.

Evidence: Task card carries precheck/task-sync/make test/make build receipts (make evidence, SELF); CI ci/test on PR HEAD is the authoritative gate. Component suites green incl. PG dialect; UI 107/107 (draft+action case); frontend 95/95 (request-shape). Red matrix covers all six approved acceptance lines: submit/validate/retry with ledger read-back, stale-revision/cross-owner/unknown-action/different-params rejections, DangerHigh await-confirm with no execution and no Confirmed passthrough, drafts-only-in-payload, post-disable 403, idempotent replay without redispatch.

Impact: backend/ui/frontend/documents gitlinks; B-class whitelist intentionally empty per approved scope; U6 (workspace) and deployment stay separately reviewed.

Refs: modules/documents/docs/proposals/2026-10-11-generative-ui-u5-action-scope.md (r2 approved); task card feature/generative-ui-u5

Why: The user approved the U5 action scope (A client-local fully open; B command-binding machinery with an empty first whitelist; C plugin-own writes via KV/task ledger; D business writes and DangerHigh-direct closed; confirm UX reuses the inline card). This lands the action half of the loop: migration v24 idempotent ledger keyed (owner, surface, action, requestId) with params-hash; SubmitAction as the single choke point (plugin activation, current-revision, action whitelist); dispatch through the command bus so DangerHigh lands on the existing inline confirm card - the endpoint does not even bind a confirmed field; generative-ui.submit is button-only (not exposed to the model) and stores form data in the plugin KV ledger; the catalog rejects unknown action ids at present time; frontend drafts travel only inside the action payload with an in-flight double-click guard. Evidence: Task card carries precheck/task-sync/make test/make build receipts (make evidence, SELF); CI ci/test on PR HEAD is the authoritative gate. Component suites green incl. PG dialect; UI 107/107 (draft+action case); frontend 95/95 (request-shape). Red matrix covers all six approved acceptance lines: submit/validate/retry with ledger read-back, stale-revision/cross-owner/unknown-action/different-params rejections, DangerHigh await-confirm with no execution and no Confirmed passthrough, drafts-only-in-payload, post-disable 403, idempotent replay without redispatch. Impact: backend/ui/frontend/documents gitlinks; B-class whitelist intentionally empty per approved scope; U6 (workspace) and deployment stay separately reviewed. Refs: modules/documents/docs/proposals/2026-10-11-generative-ui-u5-action-scope.md (r2 approved); task card feature/generative-ui-u5
weichen added 5 commits 2026-10-11 14:27:43 +00:00
Why: establish the authorized task workspace and its initial baseline.

Evidence: preserved precheck receipt in .task/feature-generative-ui-u5.md; R0=f9c6ccc263c00d95919c021cb2fe31cf2f0936d8.

Impact: task metadata only; the feature workspace starts at f9c6ccc263.

Refs: .task/feature-generative-ui-u5.md
Why: include the current integration baseline before verification.

Evidence: fetched origin/main=53a3effef777c83bd6baa63f8181f34480533559.

Impact: integrate upstream changes without rewriting task history.

Refs: task-sync
Why: bind the task validation checkpoint to the latest integration baseline.

Evidence: SELF recursive component checks; sync_base=53a3effef777c83bd6baa63f8181f34480533559; candidate=e72bade1b116ac71698f0ee8735afbdbcda814d3.

Impact: task metadata only.

Refs: .task/feature-generative-ui-u5.md
Record the U5 outcomes and receipts in the task card
ci / test-pg (pull_request) Successful in 1m30s
ci / test (pull_request) Successful in 3m40s
e9f29fb463
weichen added 1 commit 2026-10-11 14:27:45 +00:00
Fill the task record PR link (#367)
ci / test-pg (pull_request) Successful in 1m28s
ci / test (pull_request) Successful in 3m31s
b102307032
weichen added 1 commit 2026-10-11 14:31:55 +00:00
Merge remote-tracking branch 'origin/main' into feature/generative-ui-u5
ci / test-pg (pull_request) Successful in 1m24s
ci / test (pull_request) Successful in 3m43s
3581916006
# Conflicts:
#	modules/documents
weichen added 1 commit 2026-10-11 14:36:47 +00:00
Merge remote-tracking branch 'origin/main' into feature/generative-ui-u5
ci / test-pg (pull_request) Successful in 1m14s
ci / test (pull_request) Successful in 2m53s
04a7f36059
weichen merged commit 238480758f into main 2026-10-11 14:39:47 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: weichen/Agent-System-Dev#367