Skip to content

groups: delete the dead plural ui/groups scries - #6224

Merged
arthyn merged 3 commits into
hunter/tlon-6274-groups-add-group-level-opaque-blob-field-custom-metadatafrom
hunter/tlon-6274-remove-dead-group-scry-surfaces
Aug 14, 2026
Merged

groups: delete the dead plural ui/groups scries#6224
arthyn merged 3 commits into
hunter/tlon-6274-groups-add-group-level-opaque-blob-field-custom-metadatafrom
hunter/tlon-6274-remove-dead-group-scry-surfaces

Conversation

@arthyn

@arthyn arthyn commented Aug 4, 2026

Copy link
Copy Markdown
Member

Summary

Removes the plural ui/groups %groups scry 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 expose v11 here") and on light/groups ("Is this endpoint in use by anything? If not, we should mark it for removal later. Otherwise it needs updating too").

light/groups turned out to be in use, so it stays. The first pass deleted it on a bad audit and broke CI — see below.

Changes

  • Delete the plural ui/groups peek arm and its three scry declarations — /x/v0|v1|v2/ui/groups
  • Repoint urbitRequestTimeout.test.ts at /v3/groups; it used /v2/ui/groups as arbitrary filler against a stubbed fetch and would otherwise name a deleted endpoint

Net 18 lines removed from app/groups.hoon.

Why light/groups stays

The 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 ready until Max attempts reached. Cause: rube's own liveness probe reads it.

apps/tlon-web/rube/index.ts:1205
  http://localhost:${ship.httpPort}/~/scry/groups/groups/light.json

checkGroupsAppHealth 404s → shipsAreReadyForTests never returns true → 30 attempts → rube aborts before any test runs.

Three more live callers depend on the same deprecated alias:

Caller Path
apps/tlon-mobile/ios/Shared/Networking/PocketChatAPI.swift:17 /~/scry/groups/groups/light
apps/tlon-mobile/android/app/src/main/java/io/tlon/landscape/api/TalkApi.java:137 /~/scry/groups/groups/light
api/openapi.yaml:42 documented as /groups/groups/light.json

The 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 %v0 and the %groups mark. 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/groups arm 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 %groups loads, and the surviving per-flag arm still answers — /v3/ui/groups/{flag} and /v3/groups both return correctly. That was the real risk, since the deleted plural arm shared the %ui %groups prefix.

./backend/run-tests.sh green 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

  • Safe to rollback without consulting PR author? (Yes)
  • Affects important code area:
    • Onboarding
    • State / providers
    • Message sync
    • Channel display
    • Notifications
    • Other: removes one unused %groups scry endpoint

A third-party client scrying /x/v0|v1|v2/ui/groups would 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-2 marks — 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.

@linear-code

linear-code Bot commented Aug 4, 2026

Copy link
Copy Markdown

TLON-6274

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
arthyn force-pushed the hunter/tlon-6274-remove-dead-group-scry-surfaces branch from c6e2162 to 408ada2 Compare August 4, 2026 20:33
arthyn and others added 2 commits August 5, 2026 16:00
…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 arthyn changed the title groups: delete the dead light/groups and plural ui/groups scries groups: delete the dead plural ui/groups scries Aug 5, 2026
@arthyn
arthyn requested a review from mikolajpp August 6, 2026 14:29
@arthyn
arthyn marked this pull request as ready for review August 14, 2026 20:38
@arthyn
arthyn merged commit 5d1b98b into hunter/tlon-6274-groups-add-group-level-opaque-blob-field-custom-metadata Aug 14, 2026
11 checks passed
@arthyn
arthyn deleted the hunter/tlon-6274-remove-dead-group-scry-surfaces branch August 14, 2026 20:38
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