groups: delete the dead plural ui/groups scries - #6224
Merged
arthyn merged 3 commits intoAug 14, 2026
Conversation
Neither surface has a consumer: nothing anywhere reads /x/vN/light/groups
or the deprecated /x/groups/light alias, and the only reference to the
plural /x/vN/ui/groups map was a request-timeout test using the path as
arbitrary filler (the in-desk create threads read the per-flag path,
which stays). Rather than carry them forward to v3, remove the peek arms
and their scry declarations.
Repoints that timeout test at /v3/groups so it does not name a deleted
endpoint.
Leaves the now-unproduced %groups-ui{,-1,-2} marks in place: dropping a
strict mark is a one-way door and keeping them costs nothing.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
arthyn
force-pushed
the
hunter/tlon-6274-remove-dead-group-scry-surfaces
branch
from
August 4, 2026 20:33
c6e2162 to
408ada2
Compare
…ld-custom-metadata' into hunter/tlon-6274-remove-dead-group-scry-surfaces
Deleting `/x/groups/light` and the `%light %groups` arm broke CI: rube's
`checkGroupsAppHealth` probes `/~/scry/groups/groups/light.json`
(apps/tlon-web/rube/index.ts:1205), so every ship failed its readiness
check and both the parallel E2E job and the production build smoke test
timed out in "Setting up ships".
Three more live callers depend on the same deprecated alias:
- apps/tlon-mobile/ios/Shared/Networking/PocketChatAPI.swift:17
- apps/tlon-mobile/android/.../api/TalkApi.java:137
- api/openapi.yaml:42, documented as /groups/groups/light.json
The earlier audit missed them by grepping the versioned spelling
(`light/groups`); every real caller uses the alias spelling
(`groups/light`).
The plural `%ui %groups` arm is still genuinely dead and stays deleted --
its only references were the per-group `/vN/ui/groups/{ship}/{name}` arm,
which survives, and a timeout test that used the path arbitrarily.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GGt4ADrmVsoD8mxunqeZxp
arthyn
marked this pull request as ready for review
August 14, 2026 20:38
arthyn
merged commit Aug 14, 2026
5d1b98b
into
hunter/tlon-6274-groups-add-group-level-opaque-blob-field-custom-metadata
11 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Removes the plural
ui/groups%groupsscry arm, which has no consumers, rather than carrying it forward to v3. Follow-up to #6209 (TLON-6274), stacked on it — review that one first.Comes out of @mikolajpp's review, threads on the plural
ui/groups("we don't exposev11here") and onlight/groups("Is this endpoint in use by anything? If not, we should mark it for removal later. Otherwise it needs updating too").light/groupsturned out to be in use, so it stays. The first pass deleted it on a bad audit and broke CI — see below.Changes
ui/groupspeek arm and its three scry declarations —/x/v0|v1|v2/ui/groupsurbitRequestTimeout.test.tsat/v3/groups; it used/v2/ui/groupsas arbitrary filler against a stubbed fetch and would otherwise name a deleted endpointNet 18 lines removed from
app/groups.hoon.Why
light/groupsstaysThe first commit deleted it too, and both the parallel E2E job and the production build smoke test failed in "Setting up ships" with
~zod is not ready/~ten is not readyuntilMax attempts reached. Cause: rube's own liveness probe reads it.checkGroupsAppHealth404s →shipsAreReadyForTestsnever returns true → 30 attempts → rube aborts before any test runs.Three more live callers depend on the same deprecated alias:
apps/tlon-mobile/ios/Shared/Networking/PocketChatAPI.swift:17/~/scry/groups/groups/lightapps/tlon-mobile/android/app/src/main/java/io/tlon/landscape/api/TalkApi.java:137/~/scry/groups/groups/lightapi/openapi.yaml:42/groups/groups/light.jsonThe audit missed all four because it grepped the versioned spelling (
light/groups); every real caller uses the alias spelling (groups/light). The arm and its four declarations are restored verbatim.On @mikolajpp's "otherwise it needs updating too": every caller reads it through the unversioned alias, which resolves to
%v0and the%groupsmark. Nothing reads%v1/%v2, and nothing needs v11/blob from it — so there is nothing to update, just something not to delete.How did I test?
The plural
ui/groupsarm is dead: the only hit was the timeout test above. The two in-desk callers (ted/group/create.hoon,ted/group/create-1.hoon) read the per-flag path/gx/groups/vN/ui/groups/<ship>/<name>, a different arm that stays.On a live moon: desk compiles and
%groupsloads, and the surviving per-flag arm still answers —/v3/ui/groups/{flag}and/v3/groupsboth return correctly. That was the real risk, since the deleted plural arm shared the%ui %groupsprefix../backend/run-tests.shgreen on the first pass: 319 OK, Unit tests passed ✅ and Aqua tests passed ✅. Affected vitest file passes (6/6), Prettier clean. The restore commit only adds back code that compiled at the base, so re-running CI is the check that matters — specifically that E2E and the smoke test get past ship setup.Risks and impact
%groupsscry endpointA third-party client scrying
/x/v0|v1|v2/ui/groupswould start getting no-match. These are unversioned-through-v2 legacy reads with no consumer in this repo, and the per-flag equivalents remain.Note this orphans the
%groups-ui,%groups-ui-1, and%groups-ui-2marks — nothing produces them now. I deliberately left the mark files and their strict-list entries alone, since dropping a strict mark is a one-way door (it can never go strict again without nest-failing legacy ships) and keeping them costs nothing.Worth a separate look: rube's health probe hanging off a deprecated alias is fragile — it made a legacy-cleanup PR look like an infrastructure outage. Repointing it at a supported endpoint would make the next cleanup safer.
Rollback plan
Revert the PR. No state, migration, or wire-format change.