• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

bleedingdeacons / fellowship / 34001256775
90%

Build:
DEFAULT BRANCH: main
Ran 06 Sep 2026 12:28AM UTC
Jobs 1
Files 55
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Sep 2026 12:25AM UTC coverage: 92.207% (+0.07%) from 92.137%
34001256775

push

github

web-flow
refactor: use Unity's password store, and audit message subjects (#10)

* refactor: use Unity's password store, and audit message subjects

Two changes, both about what the server keeps and where.

The password store moves to Unity. Fellowship kept
wp_fellowship_credentials and Reach kept an identical
wp_reach_credentials, so a member who set a password in one could not
sign into the other with it, and a reset in one left the other stale
with nothing anywhere to say so. A member has one password, not one per
app. PasswordCredential, the repository contract and the wpdb
implementation are gone from here; FellowshipServiceProvider no longer
binds one, and Schema no longer installs the table. Unity registers the
binding into the same container, so PasswordAuthenticator resolves it
unchanged.

The local in-memory double goes too, in favour of Unity's, which
Fellowship and Reach now share — two independently written doubles for
one contract are two guesses at the same behaviour, and the awkward
parts here are exactly the ones worth agreeing on.

Scrutiny now records a message's subject, and still never its body. An
audit entry saying only that a message reached eleven people cannot
answer which message without opening the message table, which is what
an auditor reviewing access should not have to do. The subject is the
shortest thing that identifies a message; the body is where the
substance is, and it is already stored with its own retention window.

A subject is member-typed text and may carry personal data, so this
relaxes the AuditLogger contract's "no raw PII" for exactly one field,
deliberately. It is therefore treated as hostile: delimiters stripped so
it cannot forge a field, newlines flattened, length capped so the
structured fields always survive the VARCHAR(255). Both send paths build
their detail through Messaging\AuditDetail so they cannot disagree.

Auth parity with Reach was checked as part of this and needs no change:
the same four provider... (continued)

3100 of 3362 relevant lines covered (92.21%)

6.17 hits per line

Coverage Regressions

Lines Coverage ∆ File
6
91.21
0.0% fellowship/fellowship/src/Auth/PasswordAuthenticator.php
5
96.63
0.02% fellowship/fellowship/src/Rest/MessageController.php
3
73.91
-1.09% fellowship/fellowship/src/Core/Schema.php
Jobs
ID Job ID Ran Files Coverage
1 34001256775.1 06 Sep 2026 12:28AM UTC 55
92.21
GitHub Action Run
Source Files on build 34001256775
  • Tree
  • List 55
  • Changed 5
  • Source Changed 0
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34001256775
  • 6db1a2e5 on github
  • Prev Build on main (#33974210915)
  • Next Build on main (#34299413956)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc