From b07ca4ee64e67670335ac99839e265cb324b30d0 Mon Sep 17 00:00:00 2001 From: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com> Date: Mon, 6 Jul 2026 17:26:31 +0000 Subject: [PATCH] plans: add regression analysis (none found) Regression review: - Compiles: Internal.hs has OverloadedStrings, so B64UrlByteString "" is fine (mempty is a pragma-independent equivalent). - Existing "link/whitespace-only must not re-approve" test (DirectoryTests 296-326) is the owner-update path editing welcome-message URL text - not publicGroupId, not groupLink, not the link-check path. Unaffected. - No missed re-approval: only publicGroupId excluded; all moderatable fields still trigger. - Non-directory clients unaffected (return flag unread; skipped store is a no-op since public_group_id is never written there). - Other caller (Commands.hs:4331 CTName) ignores the Bool; its domain check reads the claim domain, which still converges. --- ...026-07-06-fix-directory-name-reapproval.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/plans/2026-07-06-fix-directory-name-reapproval.md b/plans/2026-07-06-fix-directory-name-reapproval.md index de2aabc1f1..e54ac4cd3a 100644 --- a/plans/2026-07-06-fix-directory-name-reapproval.md +++ b/plans/2026-07-06-fix-directory-name-reapproval.md @@ -171,6 +171,29 @@ not a directory policy, so it belongs where the comparison lives: pre-update snapshot (enqueue-vs-process window) and leaves `groupUpdated` misleading for any future consumer. Core is preferred per §5. +## 7b. Regressions checked (none found) + +- **Compiles.** `Internal.hs` has `{-# LANGUAGE OverloadedStrings #-}`, so + `B64UrlByteString ""` type-checks. (`B64UrlByteString mempty` — inner + `ByteString` `mempty` — is an equivalent pragma-independent form.) +- **Existing "link/whitespace-only must not re-approve" test is untouched** + (`DirectoryTests.hs:296-326`). That test changes a URL inside the *welcome + message* text and exercises the owner-update path (`deGroupUpdated`) — not + `publicGroup.groupLink`, not `publicGroupId`, and not the link-check path. The + fix normalizes only `publicGroupId`, so every non-`publicGroupId` field + (including `groupLink`, description, image) compares exactly as before. +- **No missed re-approval.** Only `publicGroupId` is excluded; any moderatable + field still differs under the comparison and still re-approves. +- **Non-directory clients unaffected.** They don't read the returned flag (the + mobile/desktop `GroupLinkPlan.Known` variant omits it, §2.4); the only other + effect is skipping an `updateGroupProfile` call when *only* `publicGroupId` + differs — a no-op, since that column is never written there anyway. +- **Other `updateGroupFromLinkData` callers safe.** `Commands.hs:4331` (CTName + path) ignores the returned `Bool` and uses `g'`; its domain check reads the + claim *domain*, which still converges (a real claim change keeps + `profileChanged` true and stores). `Commands.hs:4358` is the directory path this + fix targets. + ## 8. Verification plan 1. **Regression test** in `tests/Bots/DirectoryTests.hs` (beside the existing