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

datatug / datatug-core / 41865888766
100%

Build:
DEFAULT BRANCH: main
Ran 04 Nov 2026 04:19PM UTC
Jobs 1
Files 311
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

04 Nov 2026 04:18PM UTC coverage: 100.0%. Remained the same
41865888766

push

github

web-flow
feat(dataaccess): agents hold their own approvals, capped by their user (#450)

Perimeter AI-agent access, part 1 (D23, D27, D28), Core only. Plan: side-session notes `perimeter-agent-access-part1-plan.md`.

- **Agents hold their own approvals.** The blanket `BINDING_MISMATCH` for any grant on an agent (`authority.go:168`) is narrowed: an agent may present grants whose subject is that agent and whose `agentUser` is the person it belongs to. Human grants never reach an agent; agent grants never reach a human; every other binding check stays.
- **Agent ⊆ user, at every authorization.** Every agent `Resolution` carries its user's fresh resolution (`agentUser`, same `ServerTime`, no longer validity). Core intersects the two read policies per table (never a union); a read the agent's own perimeter admits but its user's does not is refused with `AGENT_USER_LACKS_ACCESS`. The user's resolution (identity and access) is part of the lease digest. `InspectTableRead` is capped the same way.
- **Host helpers.** `ProjectAgentResolution` builds the agent resolution (through the sealed exact snapshot when one applies); `Covers` answers whether a person can read a scope now, with the same admission as a read, for own-agent decisions and dormancy.
- **Wire.** `Grant.agentUser`, `forwarded`, `effectiveAt`; `Decision.forOwnAgent`, `dormant`, `byAgentUser`; validated so they appear only on agent grants, an agent never decides, and the user's own decision is always flagged.

Rows and fields: MVP grants carry no record or field scope, so per-table is the complete intersection today; the seam is `operationReadPolicy.intersect`, where DAS L3 field units join.

Breaking for hosts: an agent resolution without `agentUser` is now refused. backend/datatug-cloud adopt this in the same round before bumping.

Review: three adversarial rounds, final APPROVE (Reviewed-Head: 0d80e5498). 100% statement coverage of `pkg/dataaccess`.

🤖 Generated with [Claude... (continued)

207 of 207 new or added lines in 8 files covered. (100.0%)

39003 of 39003 relevant lines covered (100.0%)

1.0 hits per line

Jobs
ID Job ID Ran Files Coverage
1 41865888766.1 04 Nov 2026 04:19PM UTC 311
100.0
GitHub Action Run
Source Files on build 41865888766
  • Tree
  • List 311
  • Changed 8
  • Source Changed 0
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • b28302aa on github
  • Prev Build on main (#41819570927)
  • Next Build on main (#41875600295)
  • 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