Skip to content
Agentmart
Submit a tool

threadlight-ground

GROUND leg: assesses ACL/citation/refusal probe evidence into a threadlight.ground/v1 manifest (GRD-001..004: ACL, citation, refusal…

Skill by aiappsgbb

IndexedMIT★ 2
Write a review

Chalk Labs

Need help deploying threadlight-ground?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/aiappsgbb-threadlight-ground

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

GROUND leg: assesses ACL/citation/refusal probe evidence into a threadlight.ground/v1 manifest (GRD-001..004: ACL, citation, refusal, freshness/coverage/baseline). Each SPEC knowledge_source's enabled control must be evidenced under its own source_id, never inferred across sources. expected_entitled is required (no name heuristic); missing/ambiguous evidence -> not-verified, never guessed; a proven leak (an unentitled principal handed a document outside its allowed_document_ids) -> must-fix. Malformed evidence raises GroundEvidenceError before any output. Persists only source metadata, principal/document IDs and allowlisted detail - never content, prompts, completions, tokens/credentials, or payloads. Manual handoff - threadlight-auto never runs probes. USE FOR: grounding evidence, ACL leak detection, citation validation, refusal checks, ground-manifest, knowledge_sources gate. DO NOT USE FOR: Foundry IQ retrieval, quality scoring, live probes, cross-leg readiness gating.

Use cases: documents, testing, writing, research

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Nov 2, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/threadlight-ground

What's inside

Skill name
threadlight-ground
Description
GROUND leg: assesses ACL/citation/refusal probe evidence into a threadlight.ground/v1 manifest (GRD-001..004: ACL, citation, refusal, freshness/coverage/baseline). Each SPEC knowledge_source's enabled control must be evidenced under its own source_id, never inferred across sources. expected_entitled is required (no name heuristic); missing/ambiguous evidence -> not-verified, never guessed; a proven leak (an unentitled principal handed a document outside its allowed_document_ids) -> must-fix. Malformed evidence raises GroundEvidenceError before any output. Persists only source metadata, principal/document IDs and allowlisted detail - never content, prompts, completions, tokens/credentials, or payloads. Manual handoff - threadlight-auto never runs probes. USE FOR: grounding evidence, ACL leak detection, citation validation, refusal checks, ground-manifest, knowledge_sources gate. DO NOT USE FOR: Foundry IQ retrieval, quality scoring, live probes, cross-leg readiness gating.
License
MIT
Metadata
version: 0.1.0
Instructions
205 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (4)

  • SKILL.md
  • ground-manifest.schema.json · references/
  • ground.py · scripts/
  • test_ground.py · tests/

SKILL.md (first lines)

# Threadlight Ground — prove the retrieval is safe, not just plausible

The **GROUND** leg: the step that turns "the agent cited something" into "the
citation is provably grounded, access-controlled, and honest about what it
doesn't know." `threadlight-ground` is a **coordinator**, not a retrieval or
evaluation engine — it never calls Foundry IQ, never issues a retrieval
query, and never runs an evaluator. It only ingests probe *results* an
operator already captured (an ACL probe run, a citation validation run, a
refusal probe run) and turns them into four findings.

> **Why "coordinator."** Provisioning and query planning stay with
> `foundry-iq` (Azure AI Search Knowledge Agent); quality/relevance scoring
> stays with `threadlight-evals`. This leg's job is narrower and stricter:
> given evidence someone already gathered, does it *prove* the knowledge
> source is safe to ground answers on? This is a **manual, live handoff** —
> `threadlight-auto` does not run live ACL/citation/refusal probes against a
> real agent for you. Running those probes against production or pilot data
> is an operator decision; this script only assesses evidence the operator
> already captured and supplies.

## What this skill does and does not do

- **Does:** sanitize a SPEC `knowledge_sources` declaration (whitelist-only —
  see `references/ground-manifest.schema.json`), assess ACL enforcement,
  citation grounding, and refusal behavior from caller-supplied probe runs,
  compute source freshness/coverage, and emit a schema-validated,
  atomically-written `specs/ground-manifest.json`.
- **Does NOT** call Foundry IQ, run a retrieval query, or invoke an
  evaluator. Every finding here is computed from evidence the caller already
  captured — a live probe is the operator's responsibility, not this
  script's.
- **Does NOT** score answer quality/relevance (`threadlight-evals`) or
  aggregate findings across every leg into a single go/no-go
  (`threadlight-production-ready` consumes GRD-001..004 for that).

## The four findings

| ID | Checks | `not-verified` when | `must-fix` when |
|---|---|---|---|
| `GRD-001` | ACL enforcement | no `permission_model: acl` source declared → trivial `pass`; an ACL source has **no runs carrying its `source_id`** (uncovered); fewer than two distinct principals; no explicit `expected_entitled` on a run (ambiguous); no entitled *and* unentitled probe for a source; a source's declared `acl_probe_principals` are not all probed | an **explicit** unentitled principal received **any** document outside its explicit `allowed_document_ids` — a subset is enough, and no allowlist means nothing is allowed. **A proven leak takes precedence over a coexisting coverage gap:** the finding is `must-fix` even when another run is ambiguous or a declared principal is unprobed, and a sibling source's `not-verified` never erases it |
| `GRD-002` | Citation grounding | a `citation_required` source has no non-vacuous citation evidence carrying its `source_id` — it needs at least one citation and at least one retrieved ID | any citation falls outside its run's retrieved set (`missing_from_retrieval`, sorted, de-duplicated) |
| `GRD-003` | Refusal behavior | a `refuse_when_unsupported` source has no refusal runs carrying its `source_id` (uncovered) | an executed probe for an unsupported query was **answered** instead of refused |
| `GRD-004` | Source freshness / coverage / baseline | no sources declared → trivial `pass`; a declared source has no covering run; a covered source's runs carry no valid RFC3339 `captured_at` (freshness unverifiable); no `retrieval_quality_baseline` was supplied | never `must-fix` — caps at `should-fix` (a covered source's oldest evidence is stale relative to its own `refresh_cadence`) |

`GRD-001..003` can reach `pass`, `must-fix`, or `not-verified`. `GRD-004` can
reach `pass`, `should-fix`, or `not-verified` — freshness/coverage gaps are
never escalated past `should-fix`, reserving `must-fix` for a *proven*
control failure. The manifest `status` is `partial` exactly when required
evidence is genuinely missing: a `not-verified` finding, an uncovered /
freshness-unverifiable source hidden behind an aggregated must-fix, or a
`must-fix` proven against **incomplete** ACL coverage (see below). An
**executed** `must-fix`/`should-fix` with **complete coverage** is still
complete evidence and never downgrades `status` on its own.

> **Negative evidence is never erased by a coverage gap.** `GRD-001` computes
> a proven leak from the **explicit** unentitled runs first, so an ambiguous
> run (no `expected_entitled`), too few principals, or an unprobed declared
> principal cannot suppress a leak proven elsewhere in the same source — and
> across sources the worst per-source status wins, so one source's
> `not-verified` never downgrades another source's `must-fix`. The coexisting
> gap is not discarded: it is preserved in a schema-safe `coverage_complete:
> false` detail flag (alongside `missing_principals` where available) so the
> envelope `status` is still `partial`. A `must-fix` with **complete**
> coverage omits the flag and remains `complete`.

> **Malformed shapes raise, they are never `not-verified`.** A missing/empty
> `source_id`, a `source_id` not in the declared inventory, a missing
> `document_ids`/`citations`/`retrieved_ids`/`query_id`, a non-string element,
> a non-boolean `expected_entitled`/`refused`, or a negative/non-finite
> telemetry value all raise `GroundEvidenceError` **before** any manifest is
> built, returned, or written. `not-verified` is reserved for genuinely
> *absent* evidence (an uncovered source, an ambiguous entitlement), never a
> *malformed* run.

## Source inventory is authoritative — coverage is never inferred

The `sources` argument **is** the SPEC-derived `knowledge_sources[]` input
contract (see `threadlight-design/references/speckit-template.md`), not
anything the CLI's `--project-root` supplies. Every declared source's
*enabled* control must be covered by evidence that carries **that source's
`source_id`**: ACL evidence when `permission_model == "acl"`, citation
evidence when `citation_required`, refusal evidence when
`refuse_when_unsupported`. Coverage for one source is never inferred from
another source's runs. A source that declares `acl_probe_principals` must
have every one of those principals probed. Every declared source id must be
**unique**: a duplicate id (e.g. a public twin that would otherwise mask an
ACL-protected source under the same id) raises `GroundEvidenceError` before
any grouping, assessment, or output.

## Explicit `expected_entitled` is required — no name heuristic

`assess_acl` classifies each ACL run only by an **explicit**
`expected_entitled` (or `entitled`) boolean on the run. There is no name
heuristic: a run without an explicit signal is *ambiguous* and yields
`not-verified`, never a guessed pass or fail. A source's ACL runs must
include at least one entitled (`true`) and one unentitled (`false`) probe.
An unentitled principal's `allowed_document_ids` is its allowlist of
legitimately-visible (e.g. public) documents; receiving anything outside it —
including a subset — is a `must-fix` leak, and **no allowlist means nothing
is allowed**. Only **explicit** unentitled runs contribute a leak, so an
ambiguous run never fabricates one — but neither can it hide a leak proven by
another run in the same source.

## Evidence shapes

```jsonc
// acl_runs[] — one per principal probed against a source. source_id and an
// explicit expected_entitled are REQUIRED; allowed_document_ids is the
// unentitled principal's allowlist (public docs it may legitimately receive).
{"principal": "entitled-analyst", "document_ids": ["doc-1", "doc-2"], "source_id": "policy-library",
 "expected_entitled": true, "captured_at": "2026-08-17T09:00:00+00:00"}
{"principal": "unentitled-guest", "document_ids": ["public-1"], "source_id": "policy-library",
 "expected_entitled": false, "allowed_document_ids": ["public-1"], "captured_at": "2026-08-17T09:00:00+00:00"}

// citation_runs[] — one per answer's citations vs. what was actually retrieved
{"citations": ["doc-1"], "retrieved_ids": ["doc-1", "doc-2"], "source_id": "policy-library",
 "captured_at": "2026-08-17T09:00:00+00:00"}

// refusal_runs[] — one per unsupported-query probe

From aiappsgbb/threadlight-skills, MIT.

More from aiappsgbb/threadlight-skills

Signals

Stars
2
Forks
5
Open issues
5
Last commit (this folder)
Aug 19, 2026 (2 months ago)

From GitHub (fetched Oct 24, 2026).

Details

Version
0.1.0
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from aiappsgbb

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get threadlight-ground running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying threadlight-ground?

CallGet help
Cite this page

threadlight-ground skill. Agent Mart. https://agentmart.dev/skills/aiappsgbb-threadlight-ground (last updated 2026-10-24)