Repository navigation
refactor: drive workflow node forms from backend descriptors - #3707
Open
AbigailDeng wants to merge 6 commits into
Open
AbigailDeng wants to merge 6 commits into
AbigailDeng wants to merge 6 commits into
Conversation
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## dev #3707 +/- ##
========================================
Coverage 83.43% 83.44%
========================================
Files 1685 1687 +2
Lines 193217 193505 +288
Branches 23239 23254 +15
========================================
+ Hits 161218 161472 +254
- Misses 21188 21214 +26
- Partials 10811 10819 +8
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 7 files with indirect coverage changes 🚀 New features to boost your workflow:
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Workflow node forms currently maintain frontend field definitions independently of the backend primitive descriptors. The two sources have drifted, and adding a module cannot reliably add its configuration controls to the console.
This change makes module-contributed backend descriptors the primary form contract. The shipped frontend schema remains an explicitly identified compatibility fallback when a descriptor is unavailable.
Changes
/api/primitivesand preserve string control values in/api/capabilities. Correct existing descriptor drift, including workflow-call lifecycle values and canonical prompt parameters.parameters: []stays authoritative. Legacy fields are never merged into a successful descriptor.devbranch's lazy-loaded locale catalogues. Add the explicit config return type required for the upstream bundle-report config to pass TypeScript declaration checks.docs/canon/workflow-primitive-descriptors.md.Validation
All validation below ran after rebasing the change onto
devat481eb042d. After the final codec review fix, the 16 frontend unit cases, TypeScript check, production build, affected-file lint, test stability guards, docs lint and diff checks were repeated.git diff --check: passed.Exact incremental test commands:
Static and build verification:
pnpm --dir apps/aevatar-console-web tsc pnpm --dir apps/aevatar-console-web build dotnet build src/workflow/Aevatar.Workflow.Infrastructure/Aevatar.Workflow.Infrastructure.csproj --no-restore --nologo -v quiet dotnet build src/workflow/extensions/Aevatar.Workflow.Extensions.Schedules/Aevatar.Workflow.Extensions.Schedules.csproj --no-restore --nologo -v quiet PATH="/tmp/aevatar-descriptor-guards:$PATH" bash tools/ci/architecture_guards.sh bash tools/ci/test_stability_guards.sh bash tools/docs/lint.sh git diff --checkThe temporary guard path contains the repository CI's pinned
buf1.68.3 binary; no repository dependency or guard was bypassed.The normal Host test project build is blocked by existing MCP SDK API incompatibilities in
MCPClientManager.csand a missing JwtBearer reference inChatEndpointsInternalTests.cs. The temporary MSBuild target compiles the affectedChatQueryEndpointsTests.csandWorkflowPrimitiveCapabilitiesTests.cs, plus the existing GlobalUsings and ProcessEnvSerialCollection, in the original test project. It does not modify the project file. This is evidence for the three selected tests, not a claim that the complete Host test project builds successfully.Reproduce the temporary Host test compilation selection
Create
/tmp/aevatar-descriptor-focused.targetswith the following content before running the selected Host command above. The project directory is resolved by MSBuild; this adds only the named files while default compile items are disabled for that command.Component and route regressions were added/updated but were not executed under the task's unit-only local test policy. No full frontend or solution suite, integration, E2E or smoke tests ran. The main remaining validation gap is the rendered interaction flow. Coverage percentages were not measured; the case-by-case risk inventory is in the architecture document.
Review and recurrence prevention
Independent adversarial review found a nested-template round-trip defect in object/array fields. It is fixed in both the shared codec and legacy adapter with pure unit regressions. No other actionable findings were reported by that review. A separate read-only Codex CLI review was stopped after exceeding five minutes without a final result and is not counted as a passing review.
Workflow Activity vNext baseline
The existing Excalidraw baseline is preserved: SHA-256
30e74d7b410ae72c4c91432355436679033679c54c10b1702908435b001577de.The design and journey contracts remain
apps/aevatar-console-web/docs/superpowers/specs/2026-08-04-workflow-activity-vnext-design.mdandapps/aevatar-console-web/docs/superpowers/specs/2026-08-04-workflow-activity-vnext-user-paths.md. Remote state comes from real API responses; the shipped schema is a visibly identified compatibility fallback. Authentication, identities, routing and locale mechanisms are preserved. Backend changes complete the descriptor contract required by the existing forms.