test(subflow-override-lab): cover parent long-poll and scoped view overrides end to end - #22
Merged
Merged
Conversation
…errides end to end New scenario for runtime feature/subflow-override-interaction-views: a parent's overrides.states.<childState>.interaction.longPoll (fallbackTimeoutSeconds, roles) and overrides.states/transitions.<key>.views, resolved child-side on the child's own state. - 9 flows + 6 views, generated by build-subflow-override-lab.py - LongPollOverrideTests (6): window in state body, armed job fires on the parent's window (5 s override on a 600 s child), roles replace on state function + authorize?ack=true via parent and child-direct, arm honours the roles override, no long-poll added to a state without one, one hop (P's override does not reach G) - ViewOverrideTests (6): state- and transition-scoped swap via parent and child-direct, no state->transition leak, unresolvable override falls back, one hop, legacy overrides.views still parent-side only - README + TEST-SCENARIOS row 12/12 against the locally built runtime (e7cb023c); neighbours AuthorizationChainLab 44/44, SubflowOrchestration 22/22, TimeoutLab 3/3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sists ExecuteAt Runtime 5f60ab4b writes the fallback deadline to the InstanceJobs row. The test stays behavioural (no read surface exposes the row and the suite has no database access); the texts that said ExecuteAt is NULL now record the before/after postgres measurement. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
3 tasks
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.
Summary
subflow-override-lab. It verifies end to end the runtime feature in feat(subflow): let a parent override a child's long-poll window/roles and scoped views vnext#1028: a parent overriding a SubFlow child's long-poll window and roles, and swapping the view the child's rules selected, per child state or child transition.authorization-chain-lab: changing that leaf's long-poll would have changed that suite's ack contract (leafroles=[chain.admin]).Changes
core/):top → mid → child(a three-level chain for the one-hop check), andparent,parent-short,parent-roles,parent-nolp,parent-legacy(legacyoverrides.viewsregression).plain-child, and six views.OverrideLabSubFlowMapping.csx,OverrideLabAlwaysTrueRule.csx.build-subflow-override-lab.py.Tests/SubflowOverrideLab, 12 tests, 2 classes):LongPollOverrideTests: the state body reports the parent's window; the fallback job fires on the parent's window; the roles override governs who gets the interaction and whoauthorize?ack=trueadmits, through the parent and on the child directly; an override on a state with no long-poll adds nothing; the override does not reach the grandchild.ViewOverrideTests: state-scoped and transition-scoped overrides, including on the directly addressed child; no leak between state and transition views; a legacy map regression check.Tests/SubflowOverrideLab/README.mdand theTEST-SCENARIOS.mdrow, in the same commit.ExecuteAt(runtime fix5f60ab4bin vnext#1028).Test Plan
VNEXT_BASE_URL=http://localhost:4201 dotnet test tests/Core.IntegrationTests --filter "FullyQualifiedName~SubflowOverrideLab"against the locally built runtime from vnext#1028 (run-docker.sh up core). Result: 12/12, three runs, on runtimee7cb023cand5f60ab4b.subflow_override_lab_child.InstanceJobs,JobType=4): after the runtime fix 10/10 rows haveExecuteAtset, versus 0/22 before.ExecuteAt − CreatedAtis 600 / 120 / 5 s: the child's own window, the parent override, and the short override.Notes
@burgan-tech/vnext-schema0.0.52 does not know the new override fields, so five parent flows failnpm run validate. The SDK publishes the JSON directly (/definitions/publish), so this does not block the tests. The fix is feat(schema): subflow long-poll and state/transition-scoped view overrides vnext-schema#139, then a schema version bump in this repo.SubflowStartersends only the headers the mapping returns. This is the consuming parent's decision, as documented in vnextdocs/domain/long-poll-termination.md.🤖 Generated with Claude Code