Forge: preserve parallel action identity - #24
Merged
Conversation
Emit stable action IDs as query descriptions and require parallel outcomes to be recorded against their originating action rather than completion order. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b8cf0691-0fe3-4d67-92ce-ce2a529c400c
There was a problem hiding this comment.
Pull request overview
This PR addresses a parallel-execution identity bug by ensuring each controller-emitted action has a stable, non-ordinal identifier that can be carried through tool execution and outcome recording without relying on completion order.
Changes:
- Emit controller actions with
descriptionset to the stableactionId(for discovery, metadata, refs, files, and tool-calls actions). - Document the requirement to pass
descriptionunchanged intosession_store_sql, and to avoid mapping outcomes by ordinal/completion order. - Add/extend controller tests to assert
description == actionIdfor both discovery and parallel tool-call actions.
Show a summary per file
| File | Description |
|---|---|
| plugins/repo-dreamer/skills/repository-skill-forge/scripts/extraction-controller.py | Adds description: action_id to all emitted action objects to preserve stable identity across parallel runs. |
| plugins/repo-dreamer/skills/repository-skill-forge/tests/test_extraction_controller.py | Adds assertions verifying action description matches actionId for discovery and tool-call actions. |
| plugins/repo-dreamer/skills/repository-skill-forge/SKILL.md | Documents the stable-identity requirement and warns against ordinal/completion-order outcome mapping. |
Review details
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
- Files reviewed: 3/3 changed files
- Comments generated: 0
- Review effort level: Lite
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
descriptionequal to its stableactionIdsession_store_sqlRoot cause
The latest run swapped two parallel outcomes: the first tool action timed out and the second succeeded, but Forge attempted to materialize the timed-out action and recorded the successful action as timed out. The materializer correctly found no result for the timed-out SQL.
Validation
git diff --checkpasses