Public tier of the agent-claims ledger: small, testable technical claims with evidence state and version scope.
Find a file
Hannah Vernon 68234bac1b
Some checks failed
lint-claims / lint (push) Failing after 5s
Add PostgreSQL claim: double AT TIME ZONE for naive timestamp conversion
When converting timestamp without time zone between timezones, a single
AT TIME ZONE returns timestamptz which, when cast back to timestamp
without time zone, uses the session timezone. The double AT TIME ZONE
pattern (source TZ then UTC) is session-independent.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-03 13:57:41 -05:00
.forgejo Scaffold agent-claims: schema, linter, docs, seed claims, CI, and community-health files 2026-07-03 12:10:06 -05:00
claims Add PostgreSQL claim: double AT TIME ZONE for naive timestamp conversion 2026-07-03 13:57:41 -05:00
schema Scaffold agent-claims: schema, linter, docs, seed claims, CI, and community-health files 2026-07-03 12:10:06 -05:00
tools Scaffold agent-claims: schema, linter, docs, seed claims, CI, and community-health files 2026-07-03 12:10:06 -05:00
.gitattributes Add .gitattributes to pin line endings 2026-07-03 12:10:06 -05:00
.gitignore Add .gitattributes to pin line endings 2026-07-03 12:10:06 -05:00
CODE_OF_CONDUCT.md Add .gitattributes to pin line endings 2026-07-03 12:10:06 -05:00
CONTRIBUTING.md Scaffold agent-claims: schema, linter, docs, seed claims, CI, and community-health files 2026-07-03 12:10:06 -05:00
LICENSE Add .gitattributes to pin line endings 2026-07-03 12:10:06 -05:00
README.md Scaffold agent-claims: schema, linter, docs, seed claims, CI, and community-health files 2026-07-03 12:10:06 -05:00
SECURITY.md Add .gitattributes to pin line endings 2026-07-03 12:10:06 -05:00

agent-claims (public)

A versioned ledger of small, testable technical claims that an agent (or a human) can reference across code, commentary, and posts. Each claim is one atomic assertion with an evidence state, provenance, and a version scope. This repository holds only non-sensitive, generalizable claims.

The design is modeled on the "claims" that agents.stackoverflow.com extracts from a post: an atomic assertion, a role, a status, and provenance. We keep the same shape and add what a long-lived local ledger needs: a version scope, a re-verify trigger, and supersession history. Git history is the lifecycle log: a status change is a commit, git blame gives per-claim provenance, and supersession is a diff.

Why this exists

  • One durable, reviewable source of truth for facts we keep re-deriving.
  • Reference a claim by id from a code comment, a PR review, a blog post, or a SOFA reply instead of restating it (restating is how versions drift apart).
  • The claim's status drives how confidently we state it: an untested claim is presented as a hypothesis, a verified claim can be stated plainly. Confidence tracks evidence, mechanically.

Layout

claims/<domain>/<slug>.md   one claim per file (YAML frontmatter + rationale)
schema/claim.schema.json    the frontmatter contract
tools/lint_claims.py        stdlib-only validator (also the CI gate)

Claim shape

See schema/claim.schema.json for the full contract. Required frontmatter fields: id, role, status, status_provenance, visibility, domains, context_scope, evidence, created, superseded_by. See CONTRIBUTING.md for the field meanings and the lifecycle.

Validate locally

python tools/lint_claims.py --root claims --public

Public mode enforces visibility: public and scans for internal terms. The denylist of internal terms is not committed here (that would leak the names it guards); supply it with --denylist <file> or the AGENT_CLAIMS_DENYLIST environment variable, sourced from a CI secret.

Scope

Only non-sensitive, generalizable claims belong here. A claim that would expose private infrastructure, internal architecture, or proprietary details must not be published; keep those in a private, access-controlled location and publish only a sanitized, generalized version. The linter's denylist scan is a backstop, not the only control.

Continuous integration

.forgejo/workflows/lint-claims.yml runs the linter in public mode on every push and pull request to main and dev. It requires a Forgejo Actions runner registered for this repository. The internal-term scan is enabled when the AGENT_CLAIMS_DENYLIST repository secret is set (its content is the denylist of sensitive terms); without it, structural validation still runs and the scan is skipped with a warning.