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

archetech / archon / 32803409350
87%

Build:
DEFAULT BRANCH: main
Ran 25 Aug 2026 03:02AM UTC
Jobs 1
Files 91
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

25 Aug 2026 02:58AM UTC coverage: 93.932%. Remained the same
32803409350

push

github

web-flow
test(wallet): Guard that a capability reaches both UI surfaces (#941)

* test(wallet): Guard that a capability reaches both UI surfaces

#919 added DIDComm credential exchange to the wallets and left the
standalone clients without it. Nothing went red: eslint did not read
.jsx, tsc does not either, and the render tests cover the wallets only.
It was found weeks later by someone opening the app and looking for a
button that was not there.

This asserts that a keymaster capability reaching one UI reaches the
other, or that its absence is recorded here with a reason. The
allowlists are the point: the clients are demos and legitimately need
not carry every wallet feature, but an omission should be a decision
someone wrote down rather than one nobody noticed.

Two things the naive version of this test gets wrong, both of which
would have made it report a gap that is not there:

A UI surface is the shared package plus the apps that mount it, not the
package alone. The clients call getNodeCapabilities in their App.jsx and
pass the answer to KeymasterUI as props, so scanning only
packages/keymaster-ui reports it missing when it is merely one level up.

And the receiver has to be checked, not just the method name. Most calls
go through an identifier named `keymaster`, but WalletProvider and
App.jsx build a fresh instance and use it before it reaches state --
which is where wallet creation and capability probing happen. Meanwhile
the wallet stores really do have loadWallet and saveWallet, and a
gatekeeper client has its own connect and getVersion; counting those as
capabilities would silently close a gap that is still open. Receivers
are classified explicitly, and an unclassified one fails rather than
being dropped.

Verified by mutation. Deleting the DIDComm calls from the clients --
#919 as it actually happened -- fails the client allowlist check.
Closing a recorded gap without removing its entry fails the other
direction. A new receiver fails the classificat... (continued)

3854 of 4341 branches covered (88.78%)

Branch coverage included in aggregate %.

8484 of 8794 relevant lines covered (96.47%)

690.73 hits per line

Jobs
ID Job ID Ran Files Coverage
1 32803409350.1 25 Aug 2026 03:02AM UTC 182
94.94
GitHub Action Run
Source Files on build 32803409350
  • Tree
  • List 91
  • Changed 77
  • Source Changed 0
  • Coverage Changed 77
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #32803409350
  • 3d9fd946 on github
  • Prev Build on main (#32796830887)
  • Next Build on main (#32862541985)
  • 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