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

archetech / archon / 30776572069
94%
main: 94%

Build:
Build:
LAST BUILD BRANCH: feat/herald-id-page
DEFAULT BRANCH: main
Ran 03 Aug 2026 01:22AM 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

03 Aug 2026 01:18AM UTC coverage: 94.145%. Remained the same
30776572069

Pull #833

github

macterra
ci: run the gatekeeper TS/Rust parity harness, and fix what it found

Closes #771.

The issue reported that api-parity-flows.json declares a parity harness
that nothing runs, and proposed either wiring up a runner or deleting the
manifest. Neither applies: the runner already exists.
scripts/gatekeeper-parity.mjs reads both manifests and implements the
flow engine. The issue's grep covered *.ts, *.js, *.rs, *.yml and *.json
— the runner is a .mjs file, the one extension not in the list. My first
grep repeated the omission.

The real gap was automation. The script needed two live services and had
no npm script or CI step, so parity was maintained by porting discipline
with no regression guard.

This adds docker/compose/gatekeeper-parity.yml, which runs both
implementations side by side, and a `gatekeeper parity` job that replays
every fixture and flow on each PR. The two services get separate storage
— the flows create DIDs, so a shared store would turn the second
implementation's create into a duplicate — but deliberately share IPFS,
which is content-addressed, so a CID divergence is itself worth failing
on.

Running it for the first time found four defects:

1. POST /queue/:registry/clear returned `true` from TypeScript and `[]`
   from Rust. GatekeeperDb.clearQueue and GatekeeperClient.clearQueue are
   both typed Promise<boolean>, so a TS client against a Rust gatekeeper
   received an array where it expected a boolean — masked because `[]` is
   truthy, so `if (await clearQueue(...))` worked by accident. Rust was
   faithfully implementing the swagger annotation, which documented an
   array and was itself wrong; the annotation is corrected and the
   OpenAPI spec regenerated.

2. The same handler did `let _ = store.clear_queue(...)`, discarding the
   Result, so a storage failure was reported to the caller as success.

3. The legacy /api/v1/did/ surface classified resolution errors with a
   crude `did:` prefix check, so a malformed CID or a forei... (continued)
Pull Request #833: ci: run the gatekeeper TS/Rust parity harness, and fix what it found

3606 of 4060 branches covered (88.82%)

Branch coverage included in aggregate %.

8229 of 8511 relevant lines covered (96.69%)

687.18 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30776572069.1 03 Aug 2026 01:22AM UTC 176
95.16
GitHub Action Run
Source Files on build 30776572069
  • 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 #30776572069
  • Pull Request #833
  • PR Base - main (#30774067785)
  • 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