Skip to content

fix(runtime): preserve exhaustive continuation policy and task integrity - #1293

Merged
aviggiano merged 3 commits into
unstablefrom
fix/exhaustive-partial-report-continuation
Oct 15, 2026
Merged

aviggiano merged 3 commits into
unstablefrom
fix/exhaustive-partial-report-continuation

Conversation

@aviggiano

@aviggiano aviggiano commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

New exhaustive runs can reconcile a partial report after the property-catalog aggregation group exhausts its attempts. The group now uses failure_policy: continue, and refreshed controllers derive optional dependency edges from the run's recorded graph for both static tasks and dynamic templates.

Publication and verification share the same derivation. Tasks whose policy is unchanged retain their exact serialized form, and verification accepts the exact pre-refresh recorded derivation as well as the refreshed derivation. Tampered optional edges remain rejected.

Scope: refresh repairs missing optional metadata already authorized by the saved graph. It does not replace a historical run's sealed halt policy with the latest packaged topology. Related to #1292; migration of those older halted runs remains separate.

Validation:

  • 25 dynamic-expansion tests, including refreshed-policy integrity, legacy readability, and tamper rejection.
  • 14 packaged-topology tests and 2 compiler/current-controller regressions.
  • The 3 previously failing dynamic lifecycle tests.
  • Runtime build, test compilation, strict ESLint, and formatting.

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; the remaining test-coverage suggestion is non-blocking.

Fix All in Claude CodeFindings

  1. P2 Dynamic templates go untested ▶
Fix with agent prompt
### Issue 1
packages/runtime/test/runtime.test.ts:11263-11267
This test only checks tasks in `tasks.tasks`. It never supplies `dynamic_groups`, so it does not cover the new call to `applyCurrentDependencyPolicy` on `taskTemplates`. That branch could stop applying the policy while this test stays green.

Add a dynamic template that depends on a newly continuing static producer. Assert that its serialized `optionalDependencyArtifactDirs` includes that producer.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

The PR lets new exhaustive runs continue after property-catalog fails.

  • Exhaustive audits continue after the property-catalog group runs out of attempts.
  • Dynamic refresh restores optional inputs allowed by the run's sealed graph.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  G[Sealed graph policy] --> P[Shared optional-input rule]
  T[Recorded tasks and templates] --> P
  P --> C[Refreshed controller]
  P --> D[Dynamic task publication]
  D --> V[Compare full tasks and graph]
  T --> L[Recorded derivation fallback]
  L --> V
Loading

Reviews (2) · Last reviewed commit: "Merge remote-tracking branch 'origin/uns..." · Reviewed by Greptile

@aviggiano
aviggiano force-pushed the fix/exhaustive-partial-report-continuation branch from 379d71b to 5be62b0 Compare October 13, 2026 11:54
@aviggiano
aviggiano marked this pull request as ready for review October 13, 2026 12:05
@aviggiano
aviggiano requested a review from a team as a code owner October 13, 2026 12:05
Comment on lines +11188 to +11192
assert.ok(
specs
.find((task) => task.attemptId === consumer.attemptId)
?.optionalDependencyArtifactDirs.includes(producer.artifactDir)
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Dynamic templates go untested

This test only checks tasks in tasks.tasks. It never supplies dynamic_groups, so it does not cover the new call to applyCurrentDependencyPolicy on taskTemplates. That branch could stop applying the policy while this test stays green.

Add a dynamic template that depends on a newly continuing static producer. Assert that its serialized optionalDependencyArtifactDirs includes that producer.

Prompt To Fix With AI
This is a comment left during a code review.
Path: packages/runtime/test/runtime.test.ts
Line: 11188-11192

Comment:
**Dynamic templates go untested**

This test only checks tasks in `tasks.tasks`. It never supplies `dynamic_groups`, so it does not cover the new call to `applyCurrentDependencyPolicy` on `taskTemplates`. That branch could stop applying the policy while this test stays green.

Add a dynamic template that depends on a newly continuing static producer. Assert that its serialized `optionalDependencyArtifactDirs` includes that producer.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Claude Code

@aviggiano aviggiano changed the title Fix exhaustive partial-report continuation fix(runtime): preserve exhaustive continuation policy and task integrity Oct 14, 2026
@aviggiano
aviggiano merged commit cc48de7 into unstable Oct 15, 2026
17 checks passed
@aviggiano
aviggiano deleted the fix/exhaustive-partial-report-continuation branch October 15, 2026 00:09
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