Skip to content

CI-001B4B — Retire one stale AdminMembers lint directive #239

Description

@daliu

Officer impact: None. This child removes one stale lint-suppression comment and updates the exact lint-debt ledger. It changes no public wording, member flow, admin task, permission, collected data, or provider behavior.

Officer documentation: None — no officer procedure or public/admin behavior changes.

Deployment evidence: None at issue creation. Closure must distinguish source/tests/merge from website publication, Firebase/provider action, production data, and live behavior.

Parent and problem

Atomic lint-debt child of CI-001 #105 and the merged fail-closed lint gate CI-001B4 #186.

On exact main 139c762a4bc38d2ee2b60298631cbc88889180fe, the deterministic frontend ledger scans 106 files and records 124 configured errors plus 7 warnings. Exactly one error is the stale // eslint-disable-next-line react-hooks/exhaustive-deps directive in src/pages/admin/members/AdminMembers.tsx: the repository does not define that rule, so the suppression comment itself is the normalized finding.

Atomic outcome and invariant

Remove only that one stale suppression comment. Preserve every executable statement, the effect dependency array [services, isReady], reload behavior, Firebase calls, rendering, authorization behavior, and runtime behavior. Build artifacts may change mechanically and are not asserted byte-identical.

Recompute the ledger through the committed non-mutating checker, then review the exact delta:

  • scanned files remain 106;
  • configured errors become 123;
  • warnings remain 7;
  • TSX configured errors become 93;
  • exactly the one AdminMembers unknown-rule directive finding disappears;
  • fingerprint becomes sha256:199771a215cc460da8b2d37433a69027d0d459658b07869ed61dbff0bc44525d;
  • no other finding, file record, rule, message, severity, lint configuration, checker, or workflow changes.

The workflow guard expected error count must match 123. Existing CI-001B4 engineering paragraphs must report 106/123/7 and identify this child without changing any PAY/C4B or other issue section.

There is no schema, migration, compatibility, provider, or production-data impact.

Acceptance criteria

  • Red proof records the exact current AdminMembers unknown-rule directive finding.
  • Only the stale suppression comment is removed from executable-source context; effect logic and dependencies remain byte-identical.
  • The generated baseline differs by exactly one removed finding plus mechanically derived counts and fingerprint.
  • tests/ci-workflow.test.js changes only EXPECTED_LINT_ERRORS from 124 to 123.
  • Direct lint verifies 106 files / 123 configured errors / 7 warnings and the exact expected fingerprint.
  • Focused workflow tests, full frontend tests, SPA tests, Functions lint/tests, applicable emulator suites, diagnostic build, and hosted CI pass.
  • Exact-diff review confirms no runtime behavior, lint rule/configuration, checker, workflow, package, or unrelated documentation change.
  • Closure reports every deployment/provider/data surface separately and releases all exact hunks.

Exact owned paths and hunks

  1. src/pages/admin/members/AdminMembers.tsx — remove only the stale hook-rule suppression comment
  2. .github/lint-baseline.json — exact generated one-finding removal and derived metadata only
  3. tests/ci-workflow.test.jsEXPECTED_LINT_ERRORS only
  4. SECURITY.md — named RISK-035 and source-ledger CI-001B4 frontend-lint count/status text only
  5. OPERATIONS_RUNBOOK.md — named frontend-lint paragraph count/status text only
  6. GITHUB_ISSUES.md — named CI-001B4 status/description text only
  7. GITHUB_ISSUE_SLICES.md — named CI-001B4 row only

Dependencies and coordination

Explicitly excluded

Lint checker or workflow changes; lint rules/configuration; packages/locks; any other component or finding; SYSTEM_DESIGN; STRIPE_COMMERCE_DESIGN; IMPLEMENTATION_PLAN; all PAY/C4B/Checkout Session sections; Functions; Rules; Firebase; Stripe/Strava/outside providers; production data; migration; deployment; officer procedures.

Claim protocol

Creation is not a claim. Before editing, re-read live comments/open PRs, create an isolated branch from the exact base, move status:ready to status:in-progress, and post CLAIMED by <canonical agent> at <UTC>; branch <branch>; exact base <SHA>. Stop and coordinate on any overlap.

Metadata

Metadata

Assignees

Labels

area:ciContinuous integration and deploymentarea:webWeb application and hostingpriority:P2Medium-priority follow-upsize:XSOwner decision or very narrow changetype:reliabilityReliability and recoverytype:testingTest infrastructure and quality gates

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions