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

stacklok / toolhive / 43218364203
73%

Build:
DEFAULT BRANCH: main
Ran 12 Nov 2026 12:38PM UTC
Jobs 1
Files 1018
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

12 Nov 2026 12:29PM UTC coverage: 73.146% (-0.02%) from 73.166%
43218364203

push

github

web-flow
Add the actor-token validator hook for ID-JAG issuance (#7116)

* Add the actor-token validator interface

ID-JAG issuance needs to name the acting agent in the act claim, but
the issuing server cannot see the client's agent registry. Add the
in-process hook an embedder implements to answer "this actor token
belongs to agent X, valid until T" or to refuse it.

The interface carries the grant's user (sub, sub_id and the parsed
upstream subject) and the configured target, so a validator can find
the user in a directory service and decide per gateway. Refusals use
three client-facing reasons: svid_expired, approval_required and
denied. The doc comment states the contract and the rules under which
the API grows without breaking validators written today.

Nothing calls the validator yet.

Co-authored-by: Mecatl <noreply@mecatl.dev>

* Map actor validator outcomes

Turn a validator's answer into the error a client sees, so every
validator gets the same client-facing behavior whatever it returns.

A refusal with one of the three documented reasons becomes 400
invalid_request with the reason as the whole error_description. Any
other error, including a typed-nil refusal or an unknown reason, is
500 server_error: a validator cannot invent a reason or choose the
client error. An accepted result must name an agent ID of 1 to 255
printable ASCII bytes without ':'; otherwise it is server_error. A
credential whose expiry is at or before the check time, in whole
seconds, is svid_expired, because a validator may accept a credential
within its clock-skew leeway and return its past exp.

The validator's error is carried for logging as a flattened text copy,
so nothing it wrapped (for example fosite.ErrUnknownRequest, which
makes fosite skip a handler) is reachable through errors.Is.

Co-authored-by: Mecatl <noreply@mecatl.dev>

* Call actor validators with a timeout

The token endpoint must never hang on, crash on, or leak through
embedder code. Add the helper that runs... (continued)

178 of 178 new or added lines in 2 files covered. (100.0%)

74 existing lines in 7 files now uncovered.

95411 of 130440 relevant lines covered (73.15%)

889.89 hits per line

Coverage Regressions

Lines Coverage ∆ File
51
59.0
-5.31% pkg/workloads/manager.go
6
19.87
-3.97% pkg/client/manager.go
6
72.34
-6.38% pkg/secrets/keyring/keyctl_linux.go
4
76.47
-1.57% pkg/container/docker/squid.go
3
83.93
-0.16% pkg/authserver/storage/redis.go
3
0.0
-100.0% pkg/workloads/sysproc_unix.go
1
96.77
-3.23% pkg/foreach/foreach.go
Jobs
ID Job ID Ran Files Coverage
1 43218364203.1 12 Nov 2026 12:38PM UTC 1018
73.15
GitHub Action Run
Source Files on build 43218364203
  • Tree
  • List 1018
  • Changed 7
  • Source Changed 0
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #43218364203
  • 7db031d1 on github
  • Prev Build on main (#43212001376)
  • Next Build on main (#43232996607)
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