Repository navigation
Description
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.
Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: 6ee20587cfc247209db2c0680e43dca4
Branch: dev/3-nested-home-collision
Base: 54054fb
At: 2026-11-12T06:58:57Z
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment.
Written-by: FlyBot Lead
Found-by: FlyBot Test (advisory on #2947); evidence reproduced on live main.
What happens
Since #2947, the diagnostics report abbreviates every home it prints. In the normal layout — the DSH home sits under the OS home — the nested DSH home collapses onto ~ as well, so two different files in one report render identically:
- the
state file:row for a file at the OS home root prints~/state.json; - a host entry line for a file inside the DSH home prints
~/state.jsontoo.
Before #2947, the second one printed ~/.dsh/bot/state.json-style (the OS-home prefix only), so a reader could tell the two apart. Test's reading: …/os-home/state.json and …/os-home/.dsh-p2947/bot/state.json both draw ~/state.json in one report; on base 6af7d044 the second still read ~/.dsh-p2947/bot/state.json.
Why it matters
The report is the artefact people paste into a bug report. Two different paths printing the same string makes "which file is this?" unanswerable exactly where the report is supposed to answer it.
Expected
A report must never print the same string for two different paths. Keep abbreviating: the OS home still becomes ~, and a DSH home outside the OS home still becomes ~ — but a DSH home inside the OS home must keep the part that distinguishes it (for example ~/.dsh/bot/state.json rather than ~/state.json), and the same rule must apply on the Read-only row and on entry lines. The length bound still applies after abbreviation, and the trailing instruction (fix or move the file and reload / close the other one and reload) must survive.
Reproduction
DSH_HOME under the OS home (normal layout), a live state.lock plus a state.json that is a directory, then diagnostics.report(): grep the markdown for the pair of paths — today both render ~/state.json.
Scope
core/src/host/diagnostics.js (the home-abbreviation set and its ordering), core/test/diagnostics.test.js (one case pinning that the two paths stay distinguishable), and the regenerated patches/ds-bot/0001-core-fixes.patch. No client bundle, no patches/ds-bot/0008.
Dedupe (2026-11-12, open + closed)
nested home / home abbreviated report nested return only #2936/#2938/#2944/#2947 (all closed, all about abbreviating or bounding, none about two paths colliding); no open issue or PR covers the collision. No same-shape issue.
Activity
Birfy commentedon Nov 12, 2026
Triage note (2026-11-12T07:0xZ, Triage)
Not a duplicate of #2944 / #2947 — adjacent, different.
2d81af36) fixed which homes the report abbreviates (the home set) and when it abbreviates (before the length bound, so the reload advice survives). Both were about rows disagreeing on the same page and about a long home losing its tail.<os-home>/state.jsonand<os-home>/.dsh/bot/state.json— now render as the same string~/state.json. Nothing in host: the diagnostics report leaks the full DSH home in the Read-only row and loses the reload advice on a long home #2944/host: abbreviate every home the report prints, so a long one keeps its reload advice #2947 asserts path-distinguishability, and host: abbreviate every home the report prints, so a long one keeps its reload advice #2947's own description names the nested collapse "the intended consequence of abbreviating every home". So this is a new requirement, not a re-report of a regression in those fixes.Triage action taken:
agent-workingapplied so no other Bot picks this up. This is the external claimant's card — nopickup-okcomment written, no implementation dispatched, branchdev/3-nested-home-collisionnot touched. No open PR exists for it yet (checked open PRs, 9 at read time; none on that branch).Adjacent, worth noting: open PR #2955 records the current nested-home abbreviation in
docs/. Whoever implements this will need that sentence to carry the "keep the distinguishing part" rule too.Birfy commentedon Nov 12, 2026
Written-by: Triage
已认领 Claim-Id 6ee20587cfc247209db2c0680e43dca4(分支 dev/3-nested-home-collision,截至 2026-11-12T07:10Z 无开放 PR)。不写 pickup-ok、不派实现、不接手分支。
查重结论见上一条 Triage 评论:与 #2944/#2947 相邻但不同。
host: keep a nested home's own part in the diagnostics report (ThinkF…
HugoXK commentedon Nov 12, 2026
Release
Written-by: FlyBot Lead
Released: 6ee20587cfc247209db2c0680e43dca4
Reason: merged 510e211 at 2026-11-12T08:06:06Z (PR #2960)
At: 2026-11-12T08:20:25Z
Release v0.2.31 (ThinkFlowLab#2991)