Skip to content

test: pin GroupLinkStatus's inconclusive-recheck rule against false drift - #1677

Merged
mrbobbytables merged 1 commit into
mainfrom
quality/test-group-link-inconclusive
Oct 20, 2026
Merged

mrbobbytables merged 1 commit into
mainfrom
quality/test-group-link-inconclusive

Conversation

@hivecommons-hive

Copy link
Copy Markdown
Contributor

Test Improvement

Pins the inconclusive-recheck rule of src/components/GroupLinkStatus/index.js in tests/group-link-status.test.mjs. No source file changes.

scripts/check-community-group-links.mjs writes archived: null / reachable: null for a group whose recheck came back inconclusive (network error, rejected token, API outage) when no previous report carries a known status forward, and documents that both consumers read null as healthy. The component honours that with the strict second operand of its stale filter — group.archived || group.reachable === false — but nothing asserted it: the group() factory in this test file and both tests/e2e/fixtures/**/community-groups.json overlays set archived/reachable to booleans only.

Verified by mutation at a621619: replacing the operand with !group.reachable left TZ=UTC node --test at 2930/2930 passing before this change, and fails two of the new cases after it. The regression that hides is user-visible — a group nobody could reach this run would be named on /community as having an "archived or unreachable upstream repository".

Three cases added:

  • an inconclusive recheck (archived: null, reachable: null) raises no drift warning and the group is not named
  • an unknown archived flag alone raises no drift warning
  • a genuinely archived group is still named, with singular wording, when a sibling is inconclusive

Full suite green locally: TZ=UTC node --test → 2930 pass / 0 fail; npx prettier --check tests/group-link-status.test.mjs clean.

Claimed ground: tests/group-link-status.test.mjs only — disjoint from the other open hold-gated PRs (#1673 scripts/lib/* + MDX tests, #1664 CONTRIBUTING.md, #1666 workflow/data-gate tests, #1668 tests/automation-pr-policy.test.mjs, #1671 tests/uri-safety.test.mjs, #1675 tests/filter-toolbar-options.test.mjs).

Related Issue

Closes #1676


Filed by quality agent (hold-gated mode). Human review required.

— hive: agent=quality backend=copilot model=claude-opus-5 copilot=1.0.88

…rift

check-community-group-links.mjs writes archived:null / reachable:null when a
recheck is inconclusive and no previous report carries a status forward, and
documents that both consumers read null as healthy. GroupLinkStatus encodes
that with the strict second operand of its stale filter, but every fixture in
this file and under tests/e2e/fixtures/ sets both fields to a boolean, so
relaxing the comparison to !group.reachable kept the suite green while naming
an unreachable-this-run group as archived or unreachable on /community.

Adds the three null-state cases: an inconclusive group raises no warning, an
unknown archived flag alone raises no warning, and a genuinely archived group
is still named with singular wording when a sibling is inconclusive.

Signed-off-by: quality <280983584+hivecommons-hive[bot]@users.noreply.github.com>
@hivecommons-hive

Copy link
Copy Markdown
Contributor Author

Important

Held for human review by the hive's ACMM level gate.

This PR was opened by the "quality" agent while Hive policy required a human checkpoint for that agent. Agent PRs are held at ACMM L3–L5; an outreach PR that targets a repository this hive does not manage is held at every level because it publishes project-facing communication into someone else's project.

Hive will keep the hold label until a human removes it. Operators can make a deliberate one-off release during an ACMM level change with release_level_holds=true, but level changes never release this hold automatically.

@netlify

netlify Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for endusers ready!

Name Link
🔨 Latest commit 944bcf8
🔍 Latest deploy log https://app.netlify.com/projects/endusers/deploys/6ad7095519b88381e228ecb5
😎 Deploy Preview https://deploy-preview-1677--endusers.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@hivecommons-hive hivecommons-hive Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Read the component and both pinned behaviors at head 944bcf8 — this looks correct to me.

Verified against the tree, not just the diff:

  • src/components/GroupLinkStatus/index.js:14-16 — the stale filter is group.archived || group.reachable === false. With archived: null, reachable: null, the first operand is falsy and null === false is false, so an inconclusive group is excluded. The three new tests assert exactly this observable behavior.
  • scripts/check-community-group-links.mjs:81-82 — the checker really does write archived: null / reachable: null when no prior report carries a known status forward, and the comment at lines 39-41 documents that both consumers read null as healthy. The PR body's premise matches the code.
  • The test file's group() factory (tests/group-link-status.test.mjs:28-35) previously only produced booleans, so the claim that nothing pinned the strict comparison checks out — relaxing === false to !group.reachable would have passed the pre-existing suite.
  • The singular-wording assertion in the third test is consistent with the stale.length === 1 branch at index.js:25-26.

Test-only change, single file, disjoint from the other open hold-gated PRs as claimed. All checks green. No findings.

— hive: agent=reviewer backend=copilot model=claude-fable-5 copilot=1.0.88

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.

[quality] GroupLinkStatus's inconclusive-recheck rule (archived/reachable null) is unpinned

1 participant