Skip to content

fix(a2a_fleet): dashboard dedup managed peers by (repo, mode) not repo (#95) - #96

Merged
Interstellar-code merged 1 commit into
mainfrom
fix/a2a-dashboard-dedup-by-repo-mode
Jun 2, 2026
Merged

Interstellar-code merged 1 commit into
mainfrom
fix/a2a-dashboard-dedup-by-repo-mode

Conversation

@Interstellar-code

Copy link
Copy Markdown
Owner

Root cause (#95)

dashboard/plugin_api.py::_managed_repos() deduped managed peers by repo_path alone (key = str(repo)). A repo running more than one mode — e.g. a claude_code + codex peer in the same repo — had every mode after the first silently dropped from the conversations/peers feed, and therefore from the Matrix3D A2A page. The docstring claimed "covers all 4 modes … deduped by repo_path", contradicting itself.

Fix

One-line key change: key = (repo_str, mode). Each mode in a repo now surfaces as its own peer. Docstring corrected.

Tests

  • test_managed_repos_keeps_multiple_modes_in_one_repo — cc + codex in one repo → both appear.
  • test_managed_repos_dedupes_same_repo_AND_mode_across_profiles — same (repo, mode) across two profiles still collapses to one row (same-mode dedup intact).
  • Falsification-verified: reverting the key to repo-only fails exactly the new multi-mode test.
  • Full suite: 380 passed.

Scope notes

a2a_fleet → v0.8.6.

Closes #95.

🤖 Generated with Claude Code

#95)

_managed_repos() (read-only dashboard API) keyed dedup on repo_path alone, so a
repo running more than one mode (e.g. cc + codex in the same repo) had every
mode after the first silently dropped from the conversations/peers feed — and
thus from the Matrix3D A2A page. The docstring even claimed "covers all 4
modes ... deduped by repo_path", contradicting itself.

Key dedup by (repo_path, mode). Each mode in a repo now surfaces as its own
peer. Docstring corrected. Adds two regression tests: cc+codex in one repo
both appear; same (repo, mode) across two profiles still collapses to one.

Falsification-verified: reverting the key to repo-only fails exactly the new
multi-mode test. Full suite 380 passed. a2a_fleet -> v0.8.6.

No front-end change (switchui #183 already correct); dashboard restart picks it
up. opencode/agy still need fleet.yaml entries to appear (genuinely unconfigured,
not dedup casualties).

Closes #95.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Interstellar-code
Interstellar-code merged commit 909de94 into main Jun 2, 2026
17 of 19 checks passed
@Interstellar-code
Interstellar-code deleted the fix/a2a-dashboard-dedup-by-repo-mode branch June 2, 2026 21:59
@github-actions

github-actions Bot commented Jun 2, 2026

Copy link
Copy Markdown

🔎 Lint report: fix/a2a-dashboard-dedup-by-repo-mode vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 10175 on HEAD, 10175 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 5497 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

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.

a2a_fleet dashboard: _managed_repos dedups by repo_path only — drops same-repo non-cc peers (codex/agy/opencode invisible)

1 participant