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

datatug / datatug-cli / 42363576401
100%

Build:
DEFAULT BRANCH: main
Ran 07 Nov 2026 10:26AM UTC
Jobs 1
Files 722
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

07 Nov 2026 10:20AM UTC coverage: 99.999%. Remained the same
42363576401

push

github

web-flow
fix: apply sensitivity labels to saved, chat and datatug:// reads (#589)

Saved and project-scoped reads now apply Meaning Graph sensitivity labels. Before this change, the demo's `agent` role got real `Customer.Email` values back from a saved query.

Found by the security review of the semantic-discovery spec (datatug/backstage#190, plan task 1). On `origin/main` the demo agent reads real emails through:
- a saved federated TugQL query (`--project --query`, `database:` leaves);
- a saved single-source TugQL or native SQL query;
- `datatug chat --role agent` (saved queries and the model's own TugQL);
- `--db datatug://<project>/<source> … --no-policies`.

Each path now refuses with `FIELD_PROTECTED` (exit 5), or masks where the `--project --source` read already masks.

- **Executor-level label guard:** every `secureread.Executor` read entry point checks labels first. A reflection test fails if a new read method skips the check.
- **Federated reads:** the check runs per leaf, before any row is read, and walks nested queries. A wildcard over a labelled leaf counts as projecting it.
- **Every principal:** saved queries and `datatug://` reads apply labels whatever the policy profile, including projects with no `policies/` and `--no-policies`.
- **Native SQL:** refused on a source with a protected label, and when the source can't be opened to check.
- **Chat:** labels are looked up by catalog id, so catalogs sharing one URL get the union of their labels.
- **Behaviour change for owners:** pending read-time suggestions now mask columns (for example `FirstName`) in `datatug://` reads, as `meaning-sensitivity` and the `--project --source` read already do. Unmask a column by labelling it `none` or dismissing the suggestion.
- **Not changed (follow-ups):**
  - `db copy` / `db export` from `datatug://` still copy labelled values; the reviewer rated this Medium and pre-existing;
  - `serve` exec/run_query keeps its agent-header rule;
  - plain HTTP sources skip t... (continued)

487 of 487 new or added lines in 13 files covered. (100.0%)

98558 of 98559 relevant lines covered (100.0%)

1.01 hits per line

Jobs
ID Job ID Ran Files Coverage
1 42363576401.1 07 Nov 2026 10:26AM UTC 722
100.0
GitHub Action Run
Source Files on build 42363576401
  • Tree
  • List 722
  • Changed 13
  • Source Changed 0
  • Coverage Changed 13
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 2f7a7faf on github
  • Prev Build on main (#42360894451)
  • Next Build on main (#42368894190)
  • 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