GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — fix(claude): keep ${VAR} references in project .mcp.json by Aaryan-Dadu · Pull Request #3377 · microsoft/apm Conversation
|
|
Thank you for contributing this Claude configuration repair. Issue #3252 has an explicit scope-approval record, and this PR appears to address the approved project-scope fix while documenting compatibility findings for other harnesses. The requested reviewers include Daniel Meppiel (@danielmeppiel) and Sergio Sisternes (@sergio-sisternes-epam). This is a recommendation for human review only, not merge approval. Generated by autopilot-pr-triage-worker. This comment is AI-generated and may contain errors. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Hi Aaryan Dadu (@Aaryan-Dadu), thanks again for this fix. The scope is accepted, and everything is green except one required check: Spec conformance gate, at the step "Mode B detector (silent-extension gate on critical paths)". The detector flags 57 new substantive lines under OpenAPM critical paths with no spec citation:
This PR changes observable MCP install behaviour (env references and ownership on reinstall), so please add a spec citation on this branch:
Use the next free Once that check is green, this can go on to review. Thanks! Generated by autopilot-pr-ready-worker. This comment is AI-generated and may contain errors. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Adds the spec citation for this PR's install and ownership change: req-mf-026 in Section 4.5, the Appendix C and manifest rows, three conformance tests, and the regenerated CONFORMANCE files.
|
Sergio Sisternes (@sergio-sisternes-epam) I added the spec rule and tests for this. It passes locally, and the checks need approval to run. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Resolve conflicts with microsoft#3406 (Codex env_vars) and the 0.1.56 spec amendment. The legacy-entry check now uses the single adapter hook matches_legacy_managed_server_config(recorded_write=...) that main introduced; Claude overrides it instead of adding a parallel hook, and ownership calls it once for self-defined and registry baselines. The PR's spec changelog row becomes 0.1.57 so it no longer collides with main's 0.1.56; the working-draft count is 137 (132 MUST, 5 SHOULD). Co-authored-by: Copilot App <[email protected]>
After merging main (microsoft#3493), self-defined servers keep their declared name (slashes included) as the native key. The security-upgrade snapshot and the conflict guidance looked entries up by the truncated key, so a slash-named server lost its upgrade notice and reconciliation guidance. Both now use the declared key. Panel follow-ups folded: the conflict guidance names which ${VAR} belongs in each field (names only, never values or defaults); the --force caveat sits on its own line; Claude's upgrade notice reads "the project .mcp.json"; the opaque _begin_env_tracking/_record_env_diagnostics snapshot contract is documented; a test guards that Claude redeclares every mutable Copilot aggregation bucket; a symmetric project-scope assertion; a comment documents the empty-value expansion choice. Addresses review-panel follow-ups (python-architect, devx-ux-expert, cli-logging-expert, test-coverage-expert, supply-chain-security-expert). Co-authored-by: Copilot App <[email protected]>
…onflict The MCP variable compatibility inventory was written before microsoft#3406 landed on main and still said Codex project scope writes resolved env values. Codex project and user scope are now separate rows, and the known-gap lists name Codex user scope. The producer page no longer uses Codex project env as the example of a harness needing literal values. The consumer page says a preserved Claude entry ends the install with an error naming each field and its reference. The CHANGELOG entry is trimmed to one line ending in (microsoft#3377). Addresses review-panel follow-ups (doc-writer, devx-ux-expert). Co-authored-by: Copilot App <[email protected]>
APM Review Panel:
|
| Persona | B | R | N | Takeaway |
|---|---|---|---|---|
| Python Architect | 0 | 1 | 2 | Paired snapshot override needed an explicit contract; ClassVar isolation is correct. |
| Test Coverage Expert | 0 | 0 | 2 | Installed-CLI and unit tests cover every done_when axis, including secret-free lockfile and both reinstall paths. |
| Doc Writer | 0 | 2 | 1 | Claude docs accurate; Codex rows in the new inventory predated #3406. |
| Supply Chain Security Expert | 0 | 0 | 1 | Fix is correct and fail-safe; migration uses a two-gate ownership proof; diagnostics are names-only. |
| CLI Logging Expert | 0 | 0 | 2 | Diagnostics are target-correct, names-only and emitted once per run. |
| DevX UX Expert | 0 | 1 | 2 | Exiting non-zero on an unprovable entry is right; the message should say which reference goes where. |
B = blocking-severity findings, R = recommended, N = nits.
Counts are signal strength, not gates. The maintainer ships.
expanded_env conflict wording (fix(codex): forward ${VAR} stdio env values with env_vars instead of writing them #3406) with the adapter native_conflict_guidance hook. -- Two runtime-exclusive guidance paths invite wording drift as more harnesses gain reference support.All panelists signal ship. Every in-scope finding is folded on this head and CI is green. The one deferred item is a cross-harness refactor outside #3252's Claude-only scope.
${VAR} belongs in each field (names only, never values or defaults) -- resolved in c3f29d3.--force caveat on its own line; Claude upgrade notice says "the project .mcp.json" -- resolved in c3f29d3._begin_env_tracking / _record_env_diagnostics pair -- resolved in c3f29d3.env_vars; known gaps updated -- resolved in 5e68347.(#3377) -- resolved in 5e68347.expanded_env conflict wording with the adapter native_conflict_guidance hook -- scope boundary: changes Codex conflict wording owned by [BUG] Codex: stdio MCP env ${VAR} written as plaintext into .codex/config.toml instead of using env_vars #3393/fix(codex): forward ${VAR} stdio env values with env_vars instead of writing them #3406; [BUG] --target claude writes resolved secrets as plaintext into project-scoped .mcp.json (VS Code/Copilot keep ${VAR} placeholders) #3252 is the Claude project repair only; suggested follow-up: a refactor issue for unified per-adapter MCP conflict guidance.tests/unit/test_claude_mcp.py::TestClaudeLegacyEntries::test_conflict_guidance_finds_slash_named_self_defined_entry -- deleted the declared-name lookup in native_conflict_guidance; test FAILED as expected; guard restored.tests/unit/test_claude_mcp.py::TestClaudeLegacyEntries::test_upgrade_snapshot_uses_declared_self_defined_key -- deleted server_info from the snapshot key lookup; test FAILED as expected; guard restored.tests/unit/test_claude_mcp.py::TestClaudeDiagnosticBucketIsolation::test_every_mutable_copilot_classvar_is_redeclared -- deleted Claude's _security_upgraded_keys redeclaration; test FAILED as expected; guard restored.uv run --extra dev ruff check and ruff format --check (src/, tests/, architecture linter scripts) both silent; pylint R0801 10.00/10; lint-auth-signals.sh and lint-architecture-boundaries.sh clean. CONFORMANCE.{md,json} regenerated after collecting the full spec suite (byte-identical); orphan_check reports 137 aligned requirements.
CI on 9cf0adc: 24 checks pass, 3 skipped, including Lint, Build & Test shards, Lifecycle Smoke, Windows gates, Spec conformance gate and CodeQL; license/cla passes (after 0 CI fix iteration(s)). A local Cursor e2e failure (test_cursor_registry_env_references_keep_optional_semantics[None-None]) also reproduces on main and is unrelated to this PR.
| PR | head SHA | CEO stance | iters | folds | defers | Copilot rounds | CI | mergeable | mergeStateStatus | notes |
|---|---|---|---|---|---|---|---|---|---|---|
| #3377 | 9cf0adc |
ship_now | 2 | 13 | 1 | 2 | green | MERGEABLE | BLOCKED | pending required review |
2 outer iteration(s); 2 Copilot round(s). Final panel stance: ship_now. Ready for maintainer review.
_begin_env_tracking / _record_env_diagnostics overrides pass different snapshot types (tuple vs dict or None) at src/apm_cli/adapters/client/claude.py_report_native_conflict has two guidance mechanisms (Codex expanded_env and the adapter hook) at src/apm_cli/integration/mcp_integrator_install.py. Deferred (Codex scope).tests/unit/test_copilot_adapter.py. Folded.mcp-variable-compatibility.md Codex rows predate fix(codex): forward ${VAR} stdio env values with env_vars instead of writing them #3406. Folded.mcp-as-primitive.md uses Codex project env as the literal-values example. Folded.--force caveat runs into the rotation sentence. Folded.${VAR} belongs in each field. Folded (names only).--force caveat. Folded.This panel is advisory. It does not block merge. Re-apply the
panel-review label after addressing feedback to re-run.
Generated by autopilot-pr-merge-worker. This comment is AI-generated and may contain errors.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
1009d4b
into
microsoft:main
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
[BUG] --target claude writes resolved secrets as plaintext into project-scoped .mcp.json (VS Code/Copilot keep ${VAR} placeholders)
There was an error while loading. Please reload this page.