Skip to content

Sync upstream/main (67 commits): dashboard load for non-VS-Code harnesses + Codex skill extraction#12

Merged
JuliusGruber merged 46 commits into
mainfrom
sync/upstream-20260530
May 30, 2026
Merged

Sync upstream/main (67 commits): dashboard load for non-VS-Code harnesses + Codex skill extraction#12
JuliusGruber merged 46 commits into
mainfrom
sync/upstream-20260530

Conversation

@JuliusGruber

Copy link
Copy Markdown
Owner

Summary

Syncs the fork with upstream/main (67 commits) so it is again additive on top of current upstream, plus a parity-report correction surfaced during the sync.

Produced via the merging-upstream skill: merge-base drift gate → parity-gap analysis → guarded merge (branch + --no-commit + build gate) → manual conflict resolution. Never merged onto main; never auto-resolved a side.

Commits

  • 959ec59Merge remote-tracking branch 'upstream/main' (67 commits)
  • 8202337docs(standalone): correct parity-gaps Bucket F

What the merge brings in

Conflict resolution

  • README.md (only conflict) — an identity conflict: the fork's standalone Quick Start (npm run serve) vs upstream's VSIX / VS Code install paths. Resolved toward the fork's standalone identity while keeping upstream's auto-merged table reformatting. rerere recorded the resolution.
  • The two fork-authored files I flagged as conflict-risk — parser-codex.test.ts (upstream +86 lines) and panel-request-service.ts (upstream +1 line) — auto-merged cleanly. All three fork fixes survived intact: Windows path.join, the 120s Codex test timeout, and the toLocaleString('en-US') locale pin.

Report correction (Bucket F)

The drift gate caught an inverted claim in STANDALONE-PARITY-GAPS.md: Bucket F listed the toLocaleString('en-US') locale pin as upstream debt to merge in, but the diffs prove the fork authored it (44e9532) and upstream HEAD is still unpinned. Recast it as fork-ahead drift (an upstream-it candidate), refreshed the staleness banner to the parity-gap.mjs header (merge-base 1fef41a → upstream 3a41450, 67 behind), and added a Fork-authored drift subsection.

Verification

  • npm run build:standalone — build complete; the esbuild FF-redirect self-guard did not throw → the standalone constants override seam is intact.
  • ✅ Drift gate post-merge — override preconditions all OK (constants.ts byte-identical, redirect wired, no core→standalone reference); no new drift leaked. The same 3 deliberate fork edits remain as steady-state (upstream-it pending), which is expected, not a breach.
  • ⚠️ Two new build warnings (vscode.commands / vscode.authentication) come from upstream's chat command + getSdlcGitHubData GitHub auth — both map to features not exposed in the standalone build (VS Code-only chat; bucket-E GitHub gap), so they degrade as designed.

Follow-ups (not in this PR)

The three fork-authored fixes are clean upstream-it candidates — worth PRing to microsoft/AI-Engineering-Coach so the fork can eventually drop them from its drift: the locale pin (metric-engine.ts), the Windows path.join fix (panel-request-service.ts), and the Codex test timeout (parser-codex.test.ts).

🤖 Generated with Claude Code

Maxim Gross and others added 30 commits May 18, 2026 12:10
- Implemented the @aicoach chat participant to provide conversational access to AI Engineer Coach data in VS Code chat.
- Registered tools for summarizing usage, analyzing activity, and providing insights through the chat interface.
- Created system prompts and follow-up suggestions to enhance user interaction.
- Added documentation for the chat participant feature, including usage examples and available commands.
- Developed formatters to transform raw Analyzer output into user-friendly JSON for chat responses.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Agent-Logs-Url: https://github.com/microsoft/AI-Engineering-Coach/sessions/10ed291e-f4e4-4728-b87a-cde9736881b7

Co-authored-by: mc5eamus <19579342+mc5eamus@users.noreply.github.com>
- Implemented the @aicoach chat participant to provide conversational access to AI Engineer Coach data in VS Code chat.
- Registered tools for summarizing usage, analyzing activity, and providing insights through the chat interface.
- Created system prompts and follow-up suggestions to enhance user interaction.
- Added documentation for the chat participant feature, including usage examples and available commands.
- Developed formatters to transform raw Analyzer output into user-friendly JSON for chat responses.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Agent-Logs-Url: https://github.com/microsoft/AI-Engineering-Coach/sessions/10ed291e-f4e4-4728-b87a-cde9736881b7

Co-authored-by: mc5eamus <19579342+mc5eamus@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
dependabot Bot and others added 16 commits May 27, 2026 09:41
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@v3...v4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.5 to 0.2.6.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](raszi/node-tmp@v0.2.5...v0.2.6)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The Codex parser did not extract skill activations from session
transcripts, so the dashboard's Tool Mastery metric undercounted
skill usage for any user running skills inside Codex.

Threads skill detection through Codex function_call handlers (both
event_msg and response_item paths), reusing extractSkillNameFromPath
and adding a sibling helper extractSkillPathsFromText for scanning
shell command strings.

Before: 0/1890 Codex sessions (0.0%) had skillsUsed populated.
After:  767/1890 (40.6%).
…Codex/OpenCode) (microsoft#53)

* fix: load dashboard when only non-VS Code harness logs exist

findLogsDirs() scans only VS Code workspace storage and Copilot
directories, so the dashboard's load gate aborts with "No Copilot chat
log directories found" whenever those are absent. But the Claude Code /
Codex / OpenCode collectors run in the parse worker independently of that
list, so a host with only ~/.claude/projects (e.g. a headless Remote-SSH
machine with no VS Code workspace storage) never loads despite having
valid sessions.

Add hasExternalHarnessSources() and gate on it so the panel only aborts
when no source of any kind is present. Update the Copilot-specific
empty-state message to reflect all supported sources.

* address Copilot review feedback

- panel.ts: include Xcode Copilot in the empty-state message (findLogsDirs
  also scans findXcodeDirs), so it isn't misleading on Xcode-only hosts.
- parser-harnesses.ts: guard hasExternalHarnessSources() to return false
  when neither HOME nor USERPROFILE is set, avoiding cwd-relative probing
  of paths like .claude/projects.
- parser-harnesses.test.ts: restore HOME/USERPROFILE in withHome()'s own
  finally block (drop afterEach) and add a test for the no-home guard.
…crosoft#54)

* chore(devcontainer): add podman-friendly devcontainer setup

* docs(readme): add three install paths and prerequisites

* docs(readme): normalize table formatting

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix(devcontainer): use typescript-node 22-bookworm base image

---------

Co-authored-by: macko76 <c_marius@msn.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
feat: add @aicoach chat participant for AI Engineer Coach data access
…ting-promises-no-unsafe-to-error

Enforce error handling for promises and improve command execution
…ator parity

installSkill/installCatalogItem built target paths via forward-slash
template literals, so the returned fsPath carried mixed separators on
Windows (real VS Code's Uri.fsPath normalizes; the stub passes through).
service-writes.test.ts failed on Windows only. Use path.join so the
returned path uses native separators on every platform.
…additive-only

Re-verified against upstream 3a41450 (was abc0a6c). Fixes the stale
additive-only premise, adds bucket F (merge debt: microsoft#53 blank-dashboard,
microsoft#67 Codex skillsUsed, locale pinning), a per-method degradations table
(saveModelBudgets/loadModelBudgets, reviewLocalRules, getWorkspaceDeps,
getSdlcRepoScan/getSdlcToolAnalysis), and corrects bucket B to SHIPPED
(exportSummary/installSkill are allowlisted).
Document continuous upstream sync for the additive-only fork: plain
git merge of upstream/main, the merge-base authorship gate, the esbuild
constants-redirect seam for behavior overrides, the parity-gap
set-difference algorithm (65 exposed), and the design for a planned
merging-upstream project skill. Derived 2026-05-30 and adversarially
verified against the live repo.
…ed merge)

Implements the skill designed in docs-fork/UPSTREAM-MERGE-STRATEGY.md §5: a
project skill that syncs the additive-only fork with upstream/main.

Layout (.claude/skills/merging-upstream/):
- SKILL.md            ordered plan-validate-execute checklist (steps 1-7)
- reference.md        the additive-only invariant + build-seam override + algorithm
- report-template.md  parity-gap report format, preserves bucket A-F structure
- scripts/fetch-upstream.sh   idempotent remote+rerere setup, fetch, print refs
- scripts/drift-gate.sh       merge-base authorship gate (NOT upstream/main) +
                              override preconditions; classifies drift deliberate vs merge
- scripts/parity-gap.mjs      gap = universe \ exposed; counts, degradations, new-method delta
- scripts/guarded-merge.sh    plan (read-only) / execute (branch + --no-commit + build gate)

Verified live against upstream 3a41450 (67 behind):
- drift-gate lists the 3 known drift files, all override preconditions OK
- parity-gap reproduces 52/12/1/65 exposed and the 10 residual gap methods exactly;
  comment-strip prevents require('vscode') from inflating the count
- guarded-merge plan mutates nothing; execute is documented but not run live

Safety: never pushes, never merges onto main, never auto-reverts the e3be742
path.join fix, surfaces conflicts, build-as-gate via npm run build:standalone.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
…utes

core.autocrlf=true would check the .sh/.mjs helpers out as CRLF on a fresh
clone, putting a stray \r in shebangs and comparisons and breaking bash. Pin
LF, scoped to the skill dir so no upstream-shared file is touched.
…head drift, not merge debt

The drift gate proves the fork (44e9532) authored the toLocaleString('en-US')
locale pin in metric-engine.ts and upstream HEAD is still unpinned; the prior
revision (af7cfb0) had the direction inverted and listed it as 'Fix: merge'.

- refresh staleness banner to the parity-gap.mjs header (merge-base 1fef41a ->
  upstream 3a41450, 67 behind)
- recast the locale item as fork-ahead (upstream-it), not debt
- add a Fork-authored drift subsection enumerating the 3 deliberate src/ edits
  with their merge-conflict overlap
- correct the merge-cleanliness caveat + priority note
@JuliusGruber
JuliusGruber merged commit f50fa13 into main May 30, 2026
6 of 10 checks passed
JuliusGruber pushed a commit that referenced this pull request Jun 4, 2026
…stream)

The fork merged upstream/main to 3a41450 (PR #12, f50fa13), so the two
portable merge-debt items are now in the tree:

- microsoft#53 (blank dashboard for non-VS-Code harnesses) — hasExternalHarnessSources()
  at parser-harnesses.ts:86, gate at panel.ts:207/213. Flipped to RESOLVED.
- microsoft#67 (Codex skillsUsed undercount) — collectSkillsFromArgs (parser-codex.ts:242),
  extractSkillPathsFromText (parser-shared.ts:320). Flipped to RESOLVED.

Verified 0 behind (fetch-upstream.sh, parity-gap.mjs), merge-base == upstream/main.
Updated the derivation header (now 3a41450, 0 behind, gap=10), foundational-correction
paragraph (debt paid; only remaining drift is the 2 fork-ahead deliberate edits),
status line, and priority notes. Left the Fork-authored drift subsection intact —
drift gate still classifies both edits DELIBERATE -> upstream-it.
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.

8 participants