Skip to content

Tickets in other repos: one fleet, one log and one graph across sibling repos - #108

Merged
hhff merged 45 commits into
mainfrom
multi-repo-2
Nov 6, 2026
Merged

hhff merged 45 commits into
mainfrom
multi-repo-2

Conversation

@hhff

@hhff hhff commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Components in other repos (PR 2 of 2). Stacked on #100; spec rev 2.4 §5, §6.2, §8, §9 (measure.link), §10, §12.

(What / Why / Migration: see pr2-release-notes.md.)

One-way doors

None. Every new field is optional (gate.repo, act.repo, goal.measure.link, entry_hash on an approved link act); a project with no repo links writes none of them.

G1: why a single-repo project runs what it ran before

The goldens in test/fixtures/g1 are untouched (git log multi-repo..HEAD -- test/fixtures/g1 is empty). Hunk by hunk:

  • git/gitOrDie/gitRun/gitBlob default cwd is HOME_CWD, which is undefined in a home checkout: every existing call runs where it ran.
  • The location constants. In a home checkout commonDir from the script equals the cwd's, devteamDir, projectDir and runDir keep their formulas, and projectRoot is repoRoot, so projectRel and kitRel are unchanged. The DEVTEAM_HOME checks run only when DEVTEAM_HOME is set. Without it, a kit whose project folder has no settings.md (no initialised home lacks one) runs only init and help, unless --project/DEVTEAM_PROJECT names the project; in the kit's own repo (a remote is sanctuarycomputer/devteam) its read-only status, whoami, validate and links run too, as before.
  • HEAD readers (cwdGit): in a home checkout process.cwd() is the same checkout the old no-cwd call read.
  • repo('home') is homeFacts plus today's functions and caches (mainRef, resolveCommit, homeMergeShaFor = the old mergeShaFor body via findMergeSha, homeReleasedIn = v*).
  • The routers. With no repo links every component's link is home, so factsRepo, repoOfTicket(Id), repoOfTicketLink return home and repoReadable('home') is true; releaseOf gives no pattern (v*).
  • checkTicket/checkPr/verdictHolds/coverageFails/registryFails/logRule/reviewRule take repo('home'), whose git, mainRef, changedFiles are today's; headIn reads the same HEAD in a home checkout.
  • gateEnv adds DEVTEAM_HOME only; DEVTEAM_MAIN is mainRoot. seedWorktree/detachedWorktree use home's settings and root. missingPins/pinsHint default to mainRoot.
  • makeSession: home's worktree commands are today's (R.git = git, R.root = mainRoot); the prompt is PROMPTS[role] unchanged for home; the pane's env line gains DEVTEAM_HOME (typed into the pane, printed by no golden).
  • sessionOf adds repoName, readable and a repo getter; the handoff path for home is projectRel's as before; handoffFor/handoffCommit/sessionSettled read through repo('home').
  • merge: R = repo('home') for a home ticket, a plan or a chore; texts gain " in " only for another repo; the gate and act lines gain repo only for another repo; home resets exactly the caches it reset before.
  • repo('home').gh: home's gh calls are exactly today's (no -R, so gh repo set-default still applies). Only a sibling's calls carry -R <its repo>.
  • fleet status: no repos key, no repo/readable on a row, no new text line, no extra fetch or PR listing without repo links; the checklist gains lines only for repo links or an existing run/links.local.json.
  • validate: D4 compares tickets in the same repo (all of them, without repo links); the story rule needs two repos; the per-repo coverage loop and the project-folder check run only over repo links.
  • metrics: unowned-files/line-empty loop over home plus repo links (just home).
  • whoami prints home= inside its # comment line (no golden).
  • runMeasureCheck: home's fetch, cache reset, sha and worktree are today's; the check's env gains DEVTEAM_HOME.
  • fetchMain: home's half is PR 1's (the no-origin skip, refusing a failed fetch); fetchLinkMain runs only for another repo. makeSession fetches home's main as before; fleet status's blockers start from the sibling fetch failures, an empty list without repo links.
  • The file drawer's peek file: home's git log call is the same (same cwd, the --ref it was given, else none); repo is passed only for a sibling file.

Two single-repo behaviour changes are on purpose:

  • merge and check-pr refuse a ticket whose depends_on hasn't merged, home's tickets included: "depends on , which is not merged yet: merge it first". Before, a dependency only kept a ticket out of ready.
  • Two merge findings count only merges after the upgrade: merged-out-of-order (a ticket on main before its dependency) and merged-without-merge (a merge no merge act made). Each reads merges at or after the commit on home's main whose kit first names it, so an existing project's history raises nothing.

Outside a home checkout, two things change on purpose: with no DEVTEAM_HOME and a cwd in no git repo, home is the repo that holds the running kit (before, commonDir was null and git-backed commands refused); with a cwd inside an unrelated git repo, home is the running kit's repo too (before, that unrelated repo was treated as home). Git reads go to home (HOME_CWD); only HEAD readers (cwdGit) see the cwd's checkout.

No forge workflow

In line with #102 (the kit installs no forge workflow; merge runs the checks), this PR adds none for a sibling repo either: an earlier draft's init --github --repo and its two-checkout template are gone, and so is fleet status's missing-workflow warning. check-pr --repo <link> [--path <checkout>] stays as a command.

Testing

Targeted tests only, per the speed rule; CI runs the full matrix. Every task's test was run red, then green, with G1 after each. Home regressions run locally: devteam kit (43 subtests, before the last merge of #100), fleet park, fleet drain, the PR 1 merge/check-pr/registry/link tests. After merging #100's base again (upstream #98, #99, #101): G1, every PR 2 test and the touched PR 1 tests, 27/27.

Cold review fixes

Fable and Opus reviewed this independently and cold. There were no blockers. They found seven majors, each reproduced and each fixed with a test that failed first:

  • Dependency order at merge: merge (dry runs too) refuses a ticket while any depends_on ticket, in any repo, is unmerged. An unreadable dependency fails closed. A new merged-out-of-order finding (severity 3) catches a merge done in the forge UI.
  • Sibling fetches each tick: observe-metrics fetches every readable repo link's main, four at a time inside the tick budget. A failed fetch becomes repo-unreachable, with the remote redacted.
  • Sibling worktree removal: worker <id> --remove [--force] removes a session worktree through its own repo and prunes that repo's worktree list. supervisor.md points to it.
  • Gates in a sibling worktree: gate --all and gate <name> run in a sibling worktree under that repo's gates and env, and log its repo.
  • Dashboard cache: the file drawer's cache key includes the repo and the ref.
  • Home's gh calls: they carry no -R, as before this change.
  • Phantom home refused: a kit copy with no settings.md and no DEVTEAM_HOME refuses everything but init and help, so it can't run as a phantom home. The kit's own repo still runs its read-only views (see below).

The reviews' minors are tracked for a follow-up PR.

Upstream review fixes

devteam-ae's review (at 187eb78) found two blockers and four should-fixes. Blocker 1 (an owner's "no" approving a link) is fixed on main by #113 and comes in with that merge. The rest, each with a regression test:

  • One answer lands only what its question showed. A repo link question carries the full settings diff it approves (every repo link change waiting to land, as "main has / would be"). --approved logs an act per entry with its entry_hash and main's prior_hash. merge --approved binds every changed repo link entry to such an act of that answer and refuses any other by name.
  • Workers can't push to their own repo's main. The deny rules are per session and also name the session's repo's main branch (trunk for a sibling). A new merged-without-merge finding catches a merge on any repo's main that no merge act made.
  • Sibling gates run outside home's tree. Merge's throwaway checkouts of another repo go in the OS temp folder, so a gate can't pass on home's node_modules or configs. Worker and review worktrees stay under .worktrees/; README and spec state the risk.
  • Single-repo changes, stated above. merged-out-of-order counts only merges after the upgrade.
  • The kit's own repo. The dead kitsOwnRepo() is gone, and status, whoami, validate and links run there again.

The review's nits (7–13) are tracked for the follow-up PR.

🤖 Generated with Claude Code

hhff and others added 30 commits November 4, 2026 22:38
…ge git

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ckout's own HEAD is read where it is

DEVTEAM_HOME is refused loudly, never followed, when it is no checkout, has no project
settings, or is a repo link's checkout (even one with a stray settings.md); so is another
repo's copy of the kit run with DEVTEAM_HOME, and a kit whose project folder holds tickets/
and no settings.md (a sibling's own copy).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…links.local.json; a wrong origin is refused

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…er of tickets only, unowned-files per repo

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…act head; its footprint is judged by home's committed lines

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ne has no checkout of it

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…rktrees, seeded from that repo's settings

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… absolute path; sessions listed by repo name

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ere; plan and chore PRs stay home's

check-pr fetches the sibling's main as well as home's, and refuses when either fetch fails.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e method and forge; gate and act lines in home's log name the repo

merge fetches the ticket repo's main as well as home's first, and refuses when either fetch fails.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…never use the object routers

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nst its own remote; every repo listed

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ked out read-only beside it

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…name their repo

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…its end-to-end ticket last; repo links through the owner

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…: read on that repo's main

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Conflicts: kitRel (PR 1's comment, PR 2's projectRoot), fetchMain (PR 1 skips a home with no
origin; PR 2 still fetches the ticket repo's main), cmdAct (PR 1's registry-attest check before
PR 2's act --repo field), HELP (both link lines plus link land), and the test file (both new
blocks kept).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…oved it (entry_hash on the approved act); lookups by a user's word go through ownEntry

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d stories

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…into multi-repo-2

Conflicts kept PR 2's code and took PR 1's wording: comments, messages and test names lose
their spec and review codes; components on repo links still land (PR 2 lifts the this-release
refusal); quality.md keeps PR 2's merge-in-the-ticket's-repo paragraph and PR 1's url-link acts
paragraph (checked by merge only, a process check within the supervisor's own class).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…as one token each, as PR 1's link text is: a hand edit on main can't start a line of the prompt

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… it: skipped with no origin, refused when the fetch fails (a measure reading, a sibling worker's start); fleet status makes a failed sibling fetch a blocker

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ion): init --github --repo and its template go, and fleet status no longer warns of a missing workflow; check-pr --repo [--path] stays as a command; README, quality.md, supervisor.md and the spec say merge is where the checks are enforced

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…en-issue, PR and review codes, as PR 1's did: they name documents an adopting project doesn't have

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t (its main by default); none, and no failure, without its checkout

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…hand-reverts expire them, goal-readiness keyed to registry_precondition

Conflicts: fetchMain (PR 1 clears linkChangedCache; PR 2 still fetches the ticket repo's main), link land (an owner-approved repo link is carried as before; a url link only when its acts lead from main's entry), goal set's usage (both --link and --registry-precondition), the act schema (prior_hash nullable, plus repo), quality.md (PR 2's merge-per-repo paragraph, then PR 1's), supervisor.md (PR 1's link land text, with PR 2's repo-link steps).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…epo project's base repo exactly as before repo links (gh repo set-default, else the only remote); a repo link's calls keep -R; the spec says so

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…md and a sibling's README.md (or one file at two refs) never share a cached Commits list

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…'s: its gates and DEVTEAM_MAIN, never home's, and each gate line names the repo; home's are unchanged

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
hhff and others added 6 commits November 5, 2026 01:18
…nit and help (a sibling's stray copy, with or without tickets/, no longer runs as a phantom home): "no docs/devteam/project/settings.md here: run init to adopt devteam in this repo, or run home's kit with DEVTEAM_HOME=<home>"; README step 2 says the kit goes into home only

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…on has merged, in whatever repo each is (a third repo's main fetched first; one this machine can't read or fetch fails closed: "cannot confirm <dep> is merged: …"); observe-metrics raises merged-out-of-order (severity 3) for a ticket that reached its main before a dependency

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…inside the tick's network budget, before the probes), so status, metrics and the dashboard read every repo's main as its origin has it now; a failed fetch is a repo-unreachable finding naming the link (redacted), never a crash, until a later tick's fetch succeeds; supervisor.md's tick step 1 runs it before status

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…belongs to (a sibling ticket's, which home's git worktree remove can't) and prunes that repo's worktree list, so a worktree deleted by hand leaves no entry holding ticket/<id> checked out and a reopened ticket's worker starts again; refused before the merge and phase done unless --force; supervisor.md's post-merge cleanup uses it

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…rs/plans/2026-11-04-other-repos.md), with repo-relative paths

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts:
#	README.md
#	test/kit.test.mjs
hhff added a commit that referenced this pull request Nov 5, 2026
…ation; a "no" approves nothing

ownerAnswer, which merge uses for owner-settings and kit-file approvals, checked only that a
question was answered, not what the owner said: a PR changing gates or governance merged citing an
answer of "no". Found reviewing #108, where it lands a repo link the owner refused. goal-change
already held this rule (goalChangeProblem); merge now does too. A review approves by its verified
result and a secrets question by what was posted, as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hhff

hhff commented Nov 5, 2026

Copy link
Copy Markdown
Member Author

Adversarial review (upstream loop), at 187eb78: CHANGES

The reviewer ran every finding on Node 18.20.4 against throwaway fixtures (home plus two siblings, local bare origins, forge git). Six of the PR's targeted multi-repo tests and five home-regression tests pass.

Blockers

  1. The owner's "no" lands the repo link (linkByOwner :8619, ownerAnswer :3392).
  2. One answer approves link changes the question never named (:3484-3497, ownerApproved :8490).
    • Reproduced: approving "add the docs repo link" also landed hand-edits to links.console.gates, links.console.ignored_checks and links.companion.remote in the same chore.
    • The owner has decided that one owner-only answer may approve a whole bundle. So the rule isn't changing; the owner must see exactly what they approve.
    • Required:
      • (a) merge binds each changed owner-kind link entry to an act with approved_by === --approved and the same entry_hash, so the entries the question was asked about are exactly the ones that land, and any others need their own approval;
      • (b) the approval question carries the full settings diff it covers.

Should-fix

  1. Workers can push straight to a sibling's main. The worker deny list is home's literal git push*main*, so a sibling on trunk isn't covered. findMergeSha then treats that ticket as merged with no gates or reviews. Fix: a per-session deny list built from that repo's main branch, plus a finding for a merge on any repo's main with no merge-word act.

  2. Sibling gates can pass only because the worktree sits inside home's tree: home's node_modules, .tool-versions and lint/ts configs are found by walking up the directories. Put sibling worktrees outside home's tree, or at least merge's throwaway ones, or document the risk.

  3. Single-repo behaviour changes the G1 section doesn't mention.

    • depsFails now refuses a home ticket whose dependency hasn't merged.
    • merged-out-of-order scans all history, so existing projects get high-severity findings for old merges.

    Say so in G1, and limit the finding to merges after the upgrade.

  4. Every non-adopted checkout now refuses everything but init and help. kitsOwnRepo() is dead, and status in the kit's own repo is refused. The PR body's description of the guard is out of date.

Nits

  1. DEVTEAM_HOME leaks into every gate's environment and every worker pane; the PR's own test file had to delete it.
  2. DEVTEAM_OWN_KIT=1, or a set DEVTEAM_PROJECT, gets past the guards. Refuse DEVTEAM_OWN_KIT when the running kit isn't home's.
  3. remoteKeyAt misses non-GitHub scp-style remotes and keeps https userinfo.
  4. A bare clone at a link's path resolves to its parent directory, and components check then fails open. Refuse bare repos; use --show-toplevel.
  5. A sibling checkout's pushurl or insteadOf redirects fetch and push while the identity check, which reads only remote.origin.url, still passes.
  6. isHandoffFile accepts handoff paths under every repo's project folder name.
  7. ownerApproved has no time window, unlike linkActs.

What held

  • A sibling PR can't touch its settings.md, its log or another ticket's folder.
  • Home's check-pr on a sibling branch is refused.
  • Sibling gates come from home's settings.
  • The DEVTEAM_HOME guards hold as claimed.
  • Worker log lines go to home's live log.
  • tmux behaviour is unchanged.
  • Remote URLs are redacted.
  • No test covers merge binding an approval to an entry, a "no" answer, or the per-repo deny list.

Merging is the upstream loop's call: it needs 1 (by merging main in) and 2 fixed, CI green, and our local runs.

hhff and others added 6 commits November 5, 2026 10:59
…answer's question showed

link add|set|rm on a repo link now asks a question that carries the full
settings diff it covers: every owner-kind links entry settings.md here would
land differently from main, this change included, as "main has / would be"
lines plus the entries as JSON. --approved logs one act per entry of that
bundle, with entry_hash (the entry that lands) and prior_hash (main's), the
registry-edit hashing PR 1 uses.

merge --approved now requires every owner-kind links entry the PR changes to
have an act of that answer naming the link with the landing entry_hash and
main's prior_hash; any other is refused by name. A bundle's acts count as one
landing for the one-answer-one-act rule.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…finds a merge no merge act made

The worker/planner policy file is per session (run/agent/<name>-claude.json),
and deniedFor adds, for every push rule naming main, the same rule naming
the main branch of the repo the session works in (a sibling on trunk gets
git push*trunk*). The owner's rules stay as written.

metrics raises merged-without-merge (high, sev 3) for a ticket that reads
merged with no merge-word act, and for a first-parent merge commit on any
readable repo's main whose branch head no merge act names. Only merges after
upgradeAt('merged-without-merge'): the commit time of the first commit on
home's main whose kit script added that token, so an existing project's
history raises nothing.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… outside home's tree

detachedWorktree, for a repo link, makes its checkout in a mkdtemp holder
under os.tmpdir() (devteam-<repo>-*, as secret post does) and removes the
empty holder on exit. Merge's gate, ratchet-base and landing checkouts, and a
sibling measure's, can no longer pass on home's node_modules, .tool-versions
or lint/ts configs found by walking up. Home's stay under .worktrees/.

Worker and review worktrees of a sibling stay under home's .worktrees/ (fleet
status, strays, worker --remove and prompts find them there); README and the
spec state the walk-up risk. Nothing is symlinked or copied between
worktrees.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…psFails for single-repo projects

The finding reads a ticket only when its merge is at or after
upgradeAt('merged-out-of-order'): the commit time of the first commit on
home's main whose kit script names the finding. An existing project's old
out-of-order merges raise nothing; with no kit tracked on main, none do.

README and the spec now say that merge and check-pr refuse any ticket whose
depends_on hasn't merged, home's tickets included, which a single-repo
project sees too.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…OwnRepo

Without DEVTEAM_HOME, a kit whose project folder has no settings.md still
runs only init and help, except in the kit's own repo (a configured remote
whose identity is sanctuarycomputer/devteam, KIT_UPSTREAM, also
SETTINGS_DEFAULTS.upstream_repo), where status, whoami, validate and links
run as they did before PR 2, over no tickets. Anything that writes is still
refused there.

kitsOwnRepo() and its registryProblems line are removed: the guard refuses
every command it could run under in the kit's own repo (no settings.md, so
no lines), so it was never reached.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@hhff
hhff changed the base branch from multi-repo to main November 5, 2026 17:51
@hhff
hhff marked this pull request as ready for review November 5, 2026 17:51
hhff and others added 2 commits November 5, 2026 13:04
Brings in #113 (ownerAnswer: an answer approves only the question's recommendation), so the owner's
"no" adds no repo link: link --approved and merge --approved refuse it (new regression test).
cmdMerge's already-merged early return (from main) now reads the ticket's repo (R, S.main_branch).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…red question's diff, acts are history only

A hand-written act carrying the owner's approved_by could bind an unshown entry (re-review of #108).
ownerLinkActFails now requires every changed owner-kind link entry to appear in the answered
question's settings diff exactly (main's entry then, the entry that lands), and refuses if the
question was changed after the owner answered (the log already refuses a supervisor setting
question.context; this is the second wall). README: sibling gates need their own worktree_setup;
merged-without-merge on siblings still merged by hand.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@hhff

hhff commented Nov 6, 2026

Copy link
Copy Markdown
Member Author

Merging for v0.20.1 (upstream loop).

@hhff
hhff merged commit e3a70f9 into main Nov 6, 2026
4 checks passed
hhff added a commit that referenced this pull request Nov 6, 2026
Conflicts resolved keeping main's rules: ownerAnswer (matched, #113),
question_hash (#116), owner_rules (#115), per-entry link binding and
links in home only (#108), one-pass linkify (#107).

Review fixes:
- merge: each changed owner settings class needs its own settling; an
  owner_only class only by the owner's own answer in it (never chat) or
  their standing rule; --approved takes several answers. A ladder-class
  answer (monitor-change) never covers an owner_only key or a kit file.
- merge: a decision is carried out once; settings acts name what settled
  them (answer, rule, decision or rung), and an act a merge logged is
  never a pending landing for a later merge.
- monitors: name set last from the key, a name field refused; credentials
  in a monitor url refused (validate, check-pr/merge); userinfo and query
  never shown (status, alerts, observations, findings, dashboard,
  settings); 2xx only is up; state seeded from the log only when
  state.json is missing; a dead poll's lock is stale at once; no SNI for
  IP hosts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant