Repository navigation
bug(agents): orchestrator_list publishes every peer as context/repository/metadata unknown on 4.2.0 although #1701 shipped #2305
Description
Before submitting
- I searched open and closed issues and did not find a report of this problem.
- I reviewed this report and removed credentials, tokens, private paths, hostnames, and other sensitive data.
Problem
With gentle-pi 4.2.0, orchestrator_list returns only opaque session IDs. Every advertised peer renders as context: unknown · repository: unknown · metadata: unknown · recorded catalog: unknown, and orchestrator_consult with kind: metadata answers status: unavailable, unknowns: ["publication-unknown-or-stale"] for each of them, including peers that are live and whose host workspace is recorded on disk.
#1701 (closed COMPLETED on 2026-10-04 via PR #1714, #1715 and #1720) and #1996 (closed via PR #1998) ship exactly this publication. PR #1720 states the recorded host root is published without requiring a subject declaration. All of these merged before the 4.2.0 release, so the installed package should carry them, yet nothing is published.
Practical impact: an orchestrator that needs to message a peer working in a sibling repository cannot recognize it. In my case the session had to be located by hand by matching the newest JSONL under ~/.pi/agent/sessions/<cwd-slug>/, and the first message went to a stale peer (the #1443 case) because the picker from #1308 offered seven indistinguishable IDs.
Steps to reproduce
- Linux, gentle-pi 4.2.0, Pi 1.3.0, default profile. Start two interactive sessions in two different Git repositories (I had three live plus stale advertisements, seven peers total).
- In one of them call
orchestrator_listwith no arguments. - Call
orchestrator_consultwithrecipient_session_idset to each listed ID and nokind(metadata). - Optionally call
orchestrator_listwithfilter: {"text": "<repo name>"}.
Observed:
- 01a141b0-8f28-721e-b281-a341d8b241c7 · context: unknown · repository: unknown · metadata: unknown
recorded catalog: unknown
(same for all seven IDs; 01a141b0-8f28… is a live session whose JSONL sits under the sibling repository's session directory)
{"schema":"gentle-agents.consultation/v1","kind":"metadata","status":"unavailable",
"source":"published_snapshot","ownerReply":false,"authority":"none",
"freshness":"unknown","unknowns":["publication-unknown-or-stale"],
"omissions":["private-context","owner-decision","reachability","exclusive-writer-ownership"]}The filtered list returns "matches":[] with "unknownContext":7,"catalogUnknown":7.
Neither session had declared a subject via orchestrator_session_id; per PR #1720 the repository scope should still be published.
Expected and actual behavior
Expected: each live peer shows its recorded repository root (or clone hash) and, when declared, its alias, as described in #1701 / PR #1714 and #1720. orchestrator_consult metadata returns the published snapshot.
Actual: every peer is unknown on every field and metadata consultation is unavailable. Discovery degrades to the legacy schema-1 activity header.
Hypothesis, not verified: PR #1714 binds the published metadata to the selected transport activation and presence generation. If the transport does not arm at startup, discovery silently falls back to the legacy header. #2166 reports the transport never arming on Windows with the failure discarded; this may be the Linux face of the same defect, or a packaging gap between what the PRs verified with the SDK and the published 4.2.0 bundle.
gentle-pi version
4.2.0
Pi version
1.3.0
Operating system
Linux
Additional context
Related: #1701, #1996, #2166 (transport never arms), #1443 (stale peers advertised), #1308 (recipient picker), #2124 (hidden transport errors).
Activity
barbatdev commentedon Oct 15, 2026
Claiming this for a fix. Updated scope after reproducing it live.
Root cause: the
unknownpeers are long-lived sessions whose code predates discovery publication. Discovery publication landed in #1714/#1720 (merged 2026-10-03, first released in v4.1.0). A session started before that keeps running its loaded code: it heartbeats the legacy schema-1 presence header (with its label) but never writes the discovery sidecar, so the 4.2.0 reader correctly fails closed and renders every field asunknown. Reproduced on Linux with a peer started on 2026-10-02: recent header labeledgentle-shell, no discovery sidecar.Scope: when a live peer has a recent header but no discovery sidecar at all,
orchestrator_listshows its header label and an explicit marker instead of all-unknown:<label> · context: legacy (this session predates discovery publication; restart it to publish its workspace and repository).Fail-closed behavior is unchanged for a present but invalid sidecar, metadata bound to another activation, and stale heartbeats;
orchestrator_consultmetadata staysunavailablefor legacy peers.Out of scope: transport arming on Windows (#2166), hidden transport errors (#2124), stale peer advertisements (#1443), the recipient picker (#1308). Presence-scan hardening (full traversal past the 128-entry page and stale duplicate headers left by resumed sessions) is a separate latent issue and goes to its own PR referencing this one.
fix(agents): label live peers that predate discovery publication