Skip to content

Add structured workflow control flow and V2 List tools (M4A) - #1496

Merged
Paul Lizer (paullizer) merged 2 commits into
paullizer-react-v2-uifrom
paullizer-simplechat-milestone-4
Sep 17, 2026
Merged

Paul Lizer (paullizer) merged 2 commits into
paullizer-react-v2-uifrom
paullizer-simplechat-milestone-4

Conversation

@paullizer

Copy link
Copy Markdown
Contributor

Summary

  • Add opt-in definition version 3 with structured If/else, explicit branch joins, task Run when/Skip, and safe later-sibling or branch-exit routing. Version-1/version-2 workflows retain their existing execution behavior.
  • Extend the existing durable runner with exact node/execution/attempt identity, persisted path decisions, paged execution/decision records, frozen authorized references, and finite execution/deadline limits. Reuse native Analyze and the existing publication service without duplicating its destination ledger.
  • Add personal/group V2 List authoring, typed condition and decision-field controls, explicit publication bindings, and paged run/attempt/receipt inspection. Classic retains run/cancel and refuses lossy advanced editing.
  • Keep this independently releasable M4A slice separate from For each/Collect (M4B), Repeat until/publication-readiness extensions (M4C), and visual Flow authoring (M5).

Target: paullizer-react-v2-ui, based on 5cb06a4061feadbe99b105a76889b255f52081df. Analyze stabilization #1495 and screening #1494 are already merged into that target; they are not re-cherry-picked or duplicated in this PR.

Linked issue

No associated issue; the owner explicitly chose to continue without one. Builds on the merged workflow/Analyze integrations in #1484, #1483, and #1495.

Release Notes & Latest Features

  • New Feature
  • Bug Fix
  • UI Enhancement
  • Breaking Change
  • Internal only

Is this visible to end users?

  • Yes
  • No

Is this admin-facing (Admin Settings, governance, deployment, config)?

  • Yes — documented workflow execution limits; no new global capability toggle or deployment changes.
  • No

Should this become a Latest Feature card?

  • Yes
  • No — not added in this incremental slice.
  • Already added

Screenshot needed for the card?

  • Yes
  • No
  • Attached

Release notes: deliberately left unchanged at the owner's request. Existing Analyze stabilization release notes are preserved.

Version bump

  • application/single_app/config.py VERSION third segment bumped: 0.261.115 → 0.261.116.
  • deployers/version.txt not changed because no deployers/ files changed.

Testing / validation

On the latest merged React V2 baseline:

  • 144 targeted Python cases passed covering structured definitions/joins/routing, exact attempts and source access, durable restart/gates/limits, real task dispatch, native Analyze → saved join → existing publication service, legacy handoffs, editor stores, and route policies.
  • 40 local browser tests passed using the real bundled V2 SPA and closed API fixtures: List authoring, safe conversion, unknown-schema read-only behavior, group scoping, mobile/keyboard editing, paged exact-attempt inspection, stale recovery confirmation, publication controls, retained V2 workflows, and the source-backed Classic guard.
  • npm --prefix .\application\v2_ui run typecheck and npm --prefix .\application\v2_ui run build passed. The existing Vite large-bundle warning remains; no remote runtime assets were introduced.
  • Swagger route check passed; changed-tree XSS and broken-access-control guardrails passed; python -m compileall -q .\application\single_app and git diff --cached --check passed.
  • Documentation inventory coverage 7/7 and site-quality checks 6/6 passed. Regenerated inventory has no semantic change for these existing workflow surfaces.
  • Earlier integration checks also passed the retained workflow contract/durability selection (303 tests + 93 subtests) and saved Analyze/model/publication selection (240 tests + 372 subtests). These counts overlap other selections and are not an aggregate suite total.

All fixtures use fictional data and isolated external-service boundaries. No live workflow, model endpoint, deployment, permission change, or document publication was used for acceptance.

Documentation

  • Release notes left unchanged by explicit owner decision.
  • Feature documentation: docs/explanation/features/WORKFLOW_STRUCTURED_CONTROL_FLOW.md; related data-flow/durability documents and create/trigger workflow guides updated.
  • Admin workflow limit documentation updated; implementation and regression details are documented with this feature rather than a separate fix document.

Security checklist

  • New Flask routes include @swagger_route(security=get_auth_security()) and existing Blueprint/user/group policies.
  • No raw settings are newly sent to non-admin frontends; existing sanitized boundaries are retained.
  • Browser JavaScript is served from local SimpleChat static assets only; no CDN-hosted JS.
  • No secrets, keys, connection strings, or local-only artifacts are included.

Boundaries and follow-up

M4A deliberately accepts only empty iteration paths. The next slice must extend real execution identity, cursor/replay behavior, collection and provenance paging before admitting For each. Existing publication states are not redefined as indexed-and-ready; richer completion policies and generic aggregate adapters remain M4C. Live acceptance requires a separately authorized matching deployment. No PR merge or deployment is requested by this change.

Introduce opt-in v3 structured paths, typed conditions, scoped durable executions, exact result/publication identities, and native V2 List authoring and run inspection. Preserve legacy workflows and document the independently releasable M4A slice in application 0.261.116.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep document_results distinct from record collections when loading complete-record pages, with legacy and structured result-reader coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@paullizer
Paul Lizer (paullizer) merged commit 36826e5 into paullizer-react-v2-ui Sep 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant