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

archetech / archon / 30722663763
94%

Build:
DEFAULT BRANCH: main
Ran 01 Aug 2026 11:08PM UTC
Jobs 1
Files 88
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

01 Aug 2026 11:06PM UTC coverage: 92.594% (+0.7%) from 91.941%
30722663763

push

github

web-flow
fix(gatekeeper): cancel the save timer when stop() fails, and close the last coverage gaps (#825)

Covers the four files still at 0% after #822 exposed them: the gatekeeper
json and json-cache backends, the keymaster wallet cache, and the didcomm
service config. No file in the repo now sits below 60%.

Writing those tests found a resource leak in DbJsonCache.stop():

    async stop() {
        this.saveDb();                 // throws if the write fails
        if (this.saveLoopTimeoutId !== null) {
            clearTimeout(...);         // never reached
        }
    }

A gatekeeper on the json-cache backend with an unwritable database cannot
shut down: stop() throws, the 20-second save timer stays armed, and the
process never exits — a hung container until the orchestrator kills it.
Found the hard way, by a test that hung for 400 seconds.

Fixed with try/finally so the timer is always cancelled while the save
error still reaches the caller, plus a regression test asserting
saveLoopTimeoutId is null after a failed stop.

Two construction-time behaviours are now documented by test, both of
which contradicted my initial assumptions:

- The constructor writes a file. loadDb() falls into its catch on a
  missing file and immediately saves an empty database, so disk is
  touched before any explicit save.
- The constructor throws when the data folder cannot be created, rather
  than deferring to saveLoop's catch, because that save runs during
  construction.

Left alone but worth noting: DbJsonCache.loadDb() reads and parses the
file twice, assigning dbCache from one parse and then overwriting it with
another. Wasteful, not incorrect.

Repo total 95.19% -> 95.85%.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>

3483 of 4060 branches covered (85.79%)

Branch coverage included in aggregate %.

8157 of 8511 relevant lines covered (95.84%)

669.05 hits per line

Coverage Regressions

Lines Coverage ∆ File
1
93.02
93.02% packages/gatekeeper/src/db/json-cache.ts
Jobs
ID Job ID Ran Files Coverage
1 30722663763.1 01 Aug 2026 11:08PM UTC 176
93.9
GitHub Action Run
Source Files on build 30722663763
  • Tree
  • List 88
  • Changed 73
  • Source Changed 1
  • Coverage Changed 73
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30722663763
  • d0bf91bd on github
  • Prev Build on main (#30721660868)
  • Next Build on main (#30765152346)
  • 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