Conversation
…ing a reference implementation, not an upstream. In `git` an `upstream` is well defined. To avoid LLM confusion, let us use the proper term. new file: .claude/skills/agentic-merge-reference-impl/SKILL.md modified: .github/copilot-instructions.md new file: .github/prompts/agentic-merge-reference-impl.prompt.md new file: .github/prompts/coding-agent-merge-reference-impl-instructions.md new file: .github/scripts/reference-impl-sync/merge-reference-impl-diff.sh new file: .github/scripts/reference-impl-sync/merge-reference-impl-finish.sh new file: .github/scripts/reference-impl-sync/merge-reference-impl-start.sh new file: .github/skills/agentic-merge-reference-impl/SKILL.md new file: .github/workflows/weekly-reference-impl-sync.lock.yml new file: .github/workflows/weekly-reference-impl-sync.md new file: .github/workflows/weekly-reference-impl-sync.yml modified: CONTRIBUTING.md modified: README.md modified: docs/WORKFLOWS.md Signed-off-by: Ed Burns <edburns@microsoft.com>
Rebase the topic branch onto current main and preserve the original intent: replace "upstream" naming with "reference implementation" across the repo. - Update docs, prompts, workflows, and release automation wording - Remove legacy upstream-sync assets superseded by reference-impl-sync assets - Update references in tests and project guidance content - Keep behavior aligned while clarifying terminology - Apply Spotless formatting updates in touched Java test files
Agent-Logs-Url: https://github.com/github/copilot-sdk-java/sessions/dc42a537-067a-4251-bd14-0fb8fede94d9 Co-authored-by: edburns <75821+edburns@users.noreply.github.com>
@Copilot wrote: > This file is runtime-imported by weekly-reference-impl-sync.lock.yml as the agent prompt, but its content is written as documentation rather than imperative agent instructions (e.g., it doesn’t tell the agent to read .lastmerge, clone, compare commits, and must call a safe-output tool). As a result, the agentic workflow may fail or behave unpredictably. Please restore the prior imperative, step-by-step instruction style (like the deleted weekly-upstream-sync.md), updated to the new reference-impl terminology, and ensure it explicitly requires calling create-issue/close-issue/noop as appropriate.
|
@copilot review this PR. |
The PR looks good. Here's a summary of what was reviewed: Consistency: All occurrences of "upstream" (case-insensitive) across Changelog handling: The Behavioral changes: None. The renames (workflow files, script files, skill directories, prompt files) are purely cosmetic — schedules, triggers, and logic are unchanged. Minor observations:
No issues found that require changes. |
|
Hello @brunoborges , can you please review #77 ? It is orthogonal to #69 but still important. More importantly it only has 26 files changed instead of 325! |
There was a problem hiding this comment.
Pull request overview
This PR standardizes repository language by replacing ambiguous “upstream” references with “reference implementation” terminology, clarifying that sync/porting targets the external github/copilot-sdk reference implementation rather than Git branch tracking.
Changes:
- Renames/rewrites sync-related docs, prompts, skills, and workflow text from “upstream” to “reference implementation”.
- Updates release automation wording to record “reference implementation sync” commit hashes in
CHANGELOG.md. - Removes legacy upstream-named agentic workflow/skill assets in favor of reference-impl equivalents.
Show a summary per file
| File | Description |
|---|---|
| src/test/java/com/github/copilot/sdk/HooksTest.java | Updates test Javadoc wording to “reference implementation”. |
| src/test/java/com/github/copilot/sdk/ElicitationTest.java | Updates porting attribution wording in Javadoc. |
| src/test/java/com/github/copilot/sdk/CommandsTest.java | Updates porting attribution wording in Javadoc. |
| docs/adr/adr-002-maven-version-and-reference-implementation-tracking.md | Replaces “upstream” wording in ADR text; minor formatting touch. |
| docs/adr/adr-001-semver-pre-general-availability.md | Replaces “upstream” wording with “reference implementation”; minor formatting touch. |
| docs/WORKFLOWS.md | Renames workflow references and describes “reference implementation” sync behavior. |
| README.md | Updates workflow/sync section terminology and references to new prompt/workflow names. |
| CONTRIBUTING.md | Updates contributor guidance to distinguish reference implementation vs this repo. |
| CHANGELOG.md | Renames “Upstream sync” markers and per-item parentheticals to “Reference implementation …”. |
| .gitignore | Ignores editor backup files (*~). |
| .github/workflows/weekly-upstream-sync.md | Removes the legacy upstream-named agentic workflow source prompt. |
| .github/workflows/weekly-reference-impl-sync.yml | Updates workflow name/steps/labels/messages to “reference implementation”. |
| .github/workflows/weekly-reference-impl-sync.md | Adds the reference-impl agentic workflow source prompt (runtime-imported). |
| .github/workflows/weekly-reference-impl-sync.lock.yml | Updates compiled agentic workflow metadata and runtime import to the new .md source. |
| .github/workflows/publish-maven.yml | Renames variables/messages from upstream to reference-impl for .lastmerge injection. |
| .github/skills/agentic-merge-upstream/SKILL.md | Removes upstream-named skill definition. |
| .github/skills/agentic-merge-reference-impl/SKILL.md | Adds reference-impl-named skill definition. |
| .github/scripts/release/update-changelog.sh | Renames script argument/printed text and changelog blockquote marker to reference-impl. |
| .github/scripts/reference-impl-sync/merge-reference-impl-start.sh | Renames/rewrites helper script text and env vars for reference-impl terminology. |
| .github/scripts/reference-impl-sync/merge-reference-impl-finish.sh | Updates helper script to use REFERENCE_IMPL_DIR and reference-impl wording. |
| .github/scripts/reference-impl-sync/merge-reference-impl-diff.sh | Updates helper script paths/labels to reference-impl terminology. |
| .github/prompts/coding-agent-merge-reference-impl-instructions.md | Updates coding-agent instructions to point to reference-impl workflow/prompt/label. |
| .github/prompts/agentic-merge-reference-impl.prompt.md | Updates the reusable merge prompt wording and script references to reference-impl. |
| .github/copilot-instructions.md | Updates repo-level Copilot instructions to use “reference implementation” terminology. |
| .claude/skills/agentic-merge-upstream/SKILL.md | Removes upstream-named Claude skill definition. |
| .claude/skills/agentic-merge-reference-impl/SKILL.md | Adds reference-impl-named Claude skill definition. |
Copilot's findings
Comments suppressed due to low confidence (3)
.github/workflows/weekly-reference-impl-sync.md:89
- Step 3b references the
refererce-impl-synclabel (typo). This won’t match the configured labelreference-impl-sync, so the automation would fail to find/close the right issues. Update the label spelling toreference-impl-sync.
1. Search for any open issues with the `refererce-impl-sync` label using the GitHub MCP tools.
2. Close each existing open `refererce-impl-sync` issue using the `close_issue` safe-output tool with a comment: "Superseded by a newer reference implementation sync check."
3. Create a new issue using the `create_issue` safe-output tool with:
.github/workflows/weekly-reference-impl-sync.md:116
- This line lists a non-existent skill name
agentic-merge-agentic-merge-reference-impl(duplicated prefix). Update it to the intended skill name so the instruction is actionable (likelyagentic-merge-reference-impl).
- **Do NOT invoke any skills** such as `agentic-merge-agentic-merge-reference-impl` or `commit-as-pull-request`.
- **Do NOT attempt to merge or port reference implementation changes.** That is done by a separate agent that picks up the issue you create.
.github/prompts/agentic-merge-reference-impl.prompt.md:185
- These commands reference
LAST_REFERENCE_IMPL_COMMIT, but earlier instructions and the helper scripts use.lastmerge/LAST_MERGE_COMMIT. As written, this variable will be undefined and the commands will fail when copied. Use the same variable name consistently (e.g.,LAST_MERGE/LAST_MERGE_COMMIT).
- Files reviewed: 25/26 changed files
- Comments generated: 3
| safe-outputs: | ||
| create-issue: | ||
| title-prefix: "[reference-impl-sync] " | ||
| assignees: [copilot] |
There was a problem hiding this comment.
The safe-output create-issue frontmatter sets assignees: [copilot], but the non-agentic workflow and docs use copilot-swe-agent. If copilot isn’t a valid assignee, issue creation will fail or assign the wrong account; consider aligning the assignee here with copilot-swe-agent (or omit assignees if assignment is handled via assign-to-agent).
| assignees: [copilot] | |
| assignees: [copilot-swe-agent] |
| Chosen option: "Track SemVer of reference implementation, with one exception.", because this enables us to pursue Virtual Threads without delaying the first public release of `copilot-sdk-java`. Also, we're supposed to be aggressively modernizing our customers. | ||
|
|
||
| To some extent, I would use qualifiers to mark a release as having some feature that is awaiting an upstream full release before it goes full ga, i.e you put out 0.1.46-virtualthreads.3 until upstream is ready to move to 0.2.0 then you release your virtual threads change and go 0.2.0. So I would make your agreement that your version numbers would match with the exception of qualifiers that you might add in exceptional circumstances. | ||
| To some extent, I would use qualifiers to mark a release as having some feature that is awaiting an reference implementation full release before it goes full ga, i.e you put out 0.1.46-virtualthreads.3 until reference implementation is ready to move to 0.2.0 then you release your virtual threads change and go 0.2.0. So I would make your agreement that your version numbers would match with the exception of qualifiers that you might add in exceptional circumstances. |
There was a problem hiding this comment.
Grammar: “awaiting an reference implementation full release” should be “awaiting a reference implementation full release”.
| To some extent, I would use qualifiers to mark a release as having some feature that is awaiting an reference implementation full release before it goes full ga, i.e you put out 0.1.46-virtualthreads.3 until reference implementation is ready to move to 0.2.0 then you release your virtual threads change and go 0.2.0. So I would make your agreement that your version numbers would match with the exception of qualifiers that you might add in exceptional circumstances. | |
| To some extent, I would use qualifiers to mark a release as having some feature that is awaiting a reference implementation full release before it goes full ga, i.e you put out 0.1.46-virtualthreads.3 until reference implementation is ready to move to 0.2.0 then you release your virtual threads change and go 0.2.0. So I would make your agreement that your version numbers would match with the exception of qualifiers that you might add in exceptional circumstances. |
| git clone --quiet https://github.com/github/copilot-sdk.git /tmp/gh-aw/agent/refererce-impl | ||
| cd /tmp/gh-aw/agent/refererce-impl |
There was a problem hiding this comment.
The temp directory path is misspelled as refererce-impl, which will cause the instructions to create/cd into a different (non-existent) folder when followed. Rename it consistently to reference-impl in both the git clone target and the cd command.
This issue also appears in the following locations of the same file:
- line 87
- line 115
| git clone --quiet https://github.com/github/copilot-sdk.git /tmp/gh-aw/agent/refererce-impl | |
| cd /tmp/gh-aw/agent/refererce-impl | |
| git clone --quiet https://github.com/github/copilot-sdk.git /tmp/gh-aw/agent/reference-impl | |
| cd /tmp/gh-aw/agent/reference-impl |
|
@copilot please apply all of your suggestions during your review that happened around 18:50 EDT today. |
Agent-Logs-Url: https://github.com/github/copilot-sdk-java/sessions/b635280e-2e95-4f3d-a5d9-a261f99c6e74 Co-authored-by: edburns <75821+edburns@users.noreply.github.com>
Applied all three review suggestions in commit
|
|
Thanks so much @brunoborges ! |
modified: .github/aw/actions-lock.json - Adds new pinned entry for `actions/github-script@v9` (sha `373c709c...`) - Updates `github/gh-aw-actions/setup` pin from `v0.63.1` to `v0.68.3` with new sha modified: .github/workflows/weekly-reference-impl-sync.lock.yml - Regenerated by `gh aw compile` (v0.68.3) from the `.md` source that was hand-edited in PR github#77 without recompiling - Compiler upgraded from v0.51.6 to v0.68.3; schema version v1 to v3 - Frontmatter hash updated to reflect current `.md` content - `create_issue` assignee now correctly reflects `copilot-swe-agent` (was `copilot`) - `assign_to_agent` now includes `model: claude-opus-4.6` - Safe-outputs config updated with new tool entries (`create_report_incomplete_issue`, `report_incomplete`, `noop`) - Action pin references updated to match newer gh-aw-actions versions Signed-off-by: Ed Burns <edburns@microsoft.com>
modified: .github/aw/actions-lock.json - Adds new pinned entry for `actions/github-script@v9` (sha `373c709c...`) - Updates `github/gh-aw-actions/setup` pin from `v0.63.1` to `v0.68.3` with new sha modified: .github/workflows/weekly-reference-impl-sync.lock.yml - Regenerated by `gh aw compile` (v0.68.3) from the `.md` source that was hand-edited in PR #77 without recompiling - Compiler upgraded from v0.51.6 to v0.68.3; schema version v1 to v3 - Frontmatter hash updated to reflect current `.md` content - `create_issue` assignee now correctly reflects `copilot-swe-agent` (was `copilot`) - `assign_to_agent` now includes `model: claude-opus-4.6` - Safe-outputs config updated with new tool entries (`create_report_incomplete_issue`, `report_incomplete`, `noop`) - Action pin references updated to match newer gh-aw-actions versions Signed-off-by: Ed Burns <edburns@microsoft.com> Co-authored-by: edburns <75821+edburns@users.noreply.github.com>
This change is not cosmetic pedantry. It removes a source of repeated ambiguity that affects contributors, automation, and review quality.
In Git,
upstreamhas a specific technical meaning: the configured tracking branch for a local branch. In this repository, many uses of "upstream" were actually referring to the external reference implementation repository and its commit lineage. Those are not the same concept.Why this matters:
What this PR does:
This change is deliberately scoped to terminology and clarity. The practical outcome is fewer misunderstandings, safer maintenance, and more accurate communication across the project.