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

archetech / archon / 29533522642
90%

Build:
DEFAULT BRANCH: main
Ran 16 Jul 2026 08:51PM UTC
Jobs 1
Files 61
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

16 Jul 2026 08:47PM UTC coverage: 90.329% (-0.002%) from 90.331%
29533522642

push

github

web-flow
feat: author real input schemas for structured-object tools (#727) (#732)

* feat: author real input schemas for structured-object tools (#727)

Five tools declared a loose JsonObjectSchema (any JSON object at all) and
handed it to a keymaster method needing a specific shape, so the server
advertised "send me anything" and failed deeper in. They now declare the real
shape: StoredWallet, VerifiableCredential, PollConfig, DmailMessage.

The unvalidatedShape() markers from #728 are gone, and so is get_property's:
didDocumentData is `unknown` and often not an object, so it now guards with
isJsonObject instead of casting -- which also stops an index into a string or
array returning a nonsense "property".

The hazard here is the opposite of the outputSchema one. Zod STRIPS unknown
keys on input parse rather than rejecting them, so a plain object where the
source type declares `[key: string]: any` would silently delete data: a
restored wallet's custom metadata, or a credential's claims. Schemas
passthrough exactly where the type declares an extension point (WalletFile,
IDInfo, Seed, credentialSubject) and stay closed where it does not (PollConfig,
DmailMessage), so junk is dropped rather than stored.

Nothing is stricter than the keymaster method behind it, or the tool would
reject input the CLI and REST API accept: deadlines stay plain strings (not
.datetime()) because keymaster accepts anything new Date() parses, and `proof`
is left unmodelled because updateCredential deletes and re-signs it. Semantic
rules keymaster owns -- deadline in the future, recipient resolves to an agent
-- are not duplicated; only what a client can act on before calling is.

The sweep test's fixtures were never valid shapes (a poll config with a `title`
field), which nothing caught while the schemas accepted anything.

Cost: ~615 tokens on listTools. Verified through a real McpServer/Client that
the wallet union survives JSON Schema generation as anyOf, custom metadata
survives th... (continued)

2940 of 3486 branches covered (84.34%)

Branch coverage included in aggregate %.

15 of 15 new or added lines in 1 file covered. (100.0%)

6120 of 6544 relevant lines covered (93.52%)

837.1 hits per line

Jobs
ID Job ID Ran Files Coverage
1 29533522642.1 16 Jul 2026 08:51PM UTC 122
91.51
GitHub Action Run
Source Files on build 29533522642
  • Tree
  • List 61
  • Changed 56
  • Source Changed 1
  • Coverage Changed 56
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #29533522642
  • 2ac744b9 on github
  • Prev Build on main (#29528958821)
  • Next Build on main (#29546951075)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc