fix(start): show bottle lineage root-first with -> arrows
lint / lint (push) Successful in 1m51s
test / unit (push) Successful in 43s
test / integration (push) Successful in 17s
test / unit (pull_request) Successful in 43s
test / integration (pull_request) Successful in 18s
prd-number / assign-numbers (push) Successful in 21s
Update Quality Badges / update-badges (push) Failing after 1m47s

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit was merged in pull request #270.
This commit is contained in:
2026-06-25 08:07:12 -04:00
parent 338c08a243
commit ca910f8f4f
2 changed files with 5 additions and 5 deletions
+2 -2
View File
@@ -274,7 +274,7 @@ def _bottle_lineage(manifest: ManifestIndex) -> dict[str, str]:
"""Return {bottle_name: lineage_label} for bottles that have an extends chain. """Return {bottle_name: lineage_label} for bottles that have an extends chain.
Bottles without a parent are omitted (the caller falls back to the bare name). Bottles without a parent are omitted (the caller falls back to the bare name).
Labels show the chain root-first: e.g. 'claude-dev <- bot-bottle-dev <- dev'.""" Labels show the chain root-first: e.g. 'dev -> bot-bottle-dev -> claude-dev'."""
if manifest.home_md is None: if manifest.home_md is None:
return {} return {}
bottles_dir = manifest.home_md / "bottles" bottles_dir = manifest.home_md / "bottles"
@@ -305,7 +305,7 @@ def _bottle_lineage(manifest: ManifestIndex) -> dict[str, str]:
chain.append(par) chain.append(par)
seen.add(par) seen.add(par)
cur = par cur = par
labels[name] = " <- ".join(reversed(chain)) labels[name] = " -> ".join(reversed(chain))
return labels return labels
+3 -3
View File
@@ -280,8 +280,8 @@ class TestBottleLineage(unittest.TestCase):
result = start_mod._bottle_lineage(manifest) result = start_mod._bottle_lineage(manifest)
self.assertNotIn("base", result) # no parent → not in map self.assertNotIn("base", result) # no parent → not in map
self.assertEqual("base <- mid", result["mid"]) self.assertEqual("base -> mid", result["mid"])
self.assertEqual("base <- mid <- leaf", result["leaf"]) self.assertEqual("base -> mid -> leaf", result["leaf"])
def test_cycle_protection(self): def test_cycle_protection(self):
import tempfile import tempfile
@@ -301,7 +301,7 @@ class TestBottleLineage(unittest.TestCase):
# Cycle must not hang; each should get a two-element chain. # Cycle must not hang; each should get a two-element chain.
for name in ("a", "b"): for name in ("a", "b"):
self.assertIn(name, result) self.assertIn(name, result)
self.assertIn("<-", result[name]) self.assertIn("->", result[name])
class TestManifestToYaml(unittest.TestCase): class TestManifestToYaml(unittest.TestCase):