| @type | https://w3id.org/semanticarts/ns/ontology/gist/Specification |
|---|---|
| title | PubLedge Protocol |
| version | 0.1.1-pre |
| license | CC-BY-4.0 |
| created | 2026-04-18 |
| modified | 2026-04-18 |
PubLedge is an open recordkeeping protocol for fact-specific written interpretations between two parties.
A PubLedge record captures a question, an answer, who agreed to it, what statutes or rules it relies on, and what the parties are now permitted, required, or restricted from doing as a result. Records are plain markdown with structured frontmatter. They are versioned in git, hash-pinned for integrity, and machine-readable through schemas bound to an open upper ontology.
PubLedge generalizes a single class of artifact across many domains:
- Regulatory — Joint Interpretation Agreements (JIAs), Regulatory Mitigation Agreements (RMAs), no-action letters, private letter rulings, advisory opinions
- Civic — HOA decision logs, co-op governance records, flying-club asset agreements, tool-library lending records, community land-trust commitments
- Private — published private rulings between two parties (e.g., a vendor and a regulator) where one party wants the public to be able to read and rely on the interpretation
The civic and regulatory framings are different use cases of the same underlying artifact: a written interpretation, jointly authored or approved, that constrains future behavior between the parties and may be of interest to third parties.
- Human-readable, machine-verifiable — every record is markdown a person can read and JSON a machine can parse.
- Plain text, no proprietary dependencies — git is the only required tool.
- Open ontology — entities bind to Semantic Arts gist (CC-BY 4.0) for cross-system interoperability.
- Hash-pinned integrity — every published record is hashed in
MANIFEST.yaml; tampering is detectable. - Drafting-in-public posture — published records carry a disclaimer until reviewed and accepted by the relevant authority.
PubLedge inherits the Knowledge-as-Code four-role spine and binds each role to a gist class:
| Role | Name | gist class | What it is |
|---|---|---|---|
| Authority | Authority | gist:GovernmentOrganization |
The party with interpretive or regulatory authority (Utah OAIP, SEC, IRS, CFPB; or, for civic uses, an HOA board, co-op council, etc.) |
| Container | Instrument | gist:Agreement (JIA) or gist:Contract (RMA, enforceable) |
The interpretation record itself |
| Secondary | Term | gist:ContractTerm |
An individual clause within an instrument |
| Primary | Obligation | gist:Requirement / gist:Restriction / gist:Permission |
The behavior the instrument requires, prohibits, or permits |
The act of issuance is itself typed gist:Determination. This separates the artifact (the agreement) from the event (the act of agreeing).
The vocabulary mapping is published at /reference/vocabulary/ and bound machine-readably in /schema/json/context.jsonld.
Every PubLedge instrument has YAML frontmatter and a markdown body.
"@type": "https://w3id.org/semanticarts/ns/ontology/gist/Agreement" # or Contract
id: {jurisdiction}-{authority}-{kind}-{seq} # Permanent identifier, lowercase; seq native where available else zero-padded, scoped to jurisdiction+kind
slug: jurisdiction-topic-period # Human-readable URL slug
title: "Plain-language title"
jurisdiction: us-ut # ISO-style jurisdiction code
issued_date: YYYY-MM-DD
issued_by: # The Authority
"@type": "https://w3id.org/semanticarts/ns/ontology/gist/SubCountryGovernment"
name: "..."
ref: "..." # Authoritative URL
parties:
- name: "..."
role: requesting_party | interpreting_authority | counterparty
obligation_kind: [requirement, restriction, permission] # any subset
statute_anchors:
- cite: "Bluebook-style citation"
url: "Canonical EveryAILaw anchor or authoritative source"
terms:
- "@type": "https://w3id.org/semanticarts/ns/ontology/gist/ContractTerm"
text: "Plain-language clause"
status: draft | reviewed | published | superseded
disclaimer: "Default text or instrument-specific override"
created: YYYY-MM-DD
modified: YYYY-MM-DDRMAs additionally require:
enforcement_authority:
name: "..."
term_length: "ISO-8601 duration or 'indefinite'"
review_date: YYYY-MM-DDIn order:
- Summary — 2-3 sentences a non-specialist can read
- Background — context for the requesting party and the question presented
- Question(s) presented — what the parties asked
- Interpretation — what the authority agreed
- Terms — narrative form of the frontmatter
terms[] - Statute citations — narrative form of
statute_anchors[]with reasoning - Limitations — scope, exclusions, expiry triggers
- Effective date and review trigger
The body is the canonical human-readable form. The frontmatter is the canonical machine-readable form. Both must agree; the validator (scripts/validate.js) enforces this.
- Permanent ID:
{jurisdiction}-{authority}-{kind}-{seq}, all lowercase.jurisdictionis the ISO-style code (e.g.usfor federal,us-utfor Utah).authorityis the kebab-case authority slug (e.g.oaip,sec,cfpb,irs,cftc).kindis one ofjia,rma,nal(no-action letter),plr(private letter ruling),ao(advisory opinion),il(interpretive letter),tpl(template).seqis the native document number where the authority provides one (e.g.plr-202506001,il-17-65); otherwise a zero-padded sequential number scoped to{jurisdiction, kind}ordered by effective date (e.g.rma-0001). IDs are permanent, never reused, and survive slug renames. - Slug: lowercase, hyphen-separated, jurisdiction prefix, topic descriptor, optional issuance period. Example:
utah-mental-health-chatbot-disclosure-2026q2. - Internal references between PubLedge entities use the permanent ID, resolved at build time.
Citations carry both a Bluebook-style cite and a url. The URL must be the most stable resolvable anchor available:
- First preference: an Every AI Law provision anchor.
- Second preference: the official jurisdictional source (e.g.,
le.utah.gov,sec.gov,irs.gov). - Never: a paywall, a PDF on a private mirror, or an unstable third-party summary.
Citation text is never duplicated into PubLedge — always linked out. PubLedge is the interpretation registry, not a statute mirror.
Every published file referenced by MANIFEST.yaml is SHA-256 hashed. The manifest itself is the control file and is not self-hashed. Verification:
./scripts/validate-hashes.shAfter intentional edits:
./scripts/validate-hashes.sh --updateCI runs validate-hashes.sh on every push. A mismatch fails the build.
The hash mechanism is adapted from skill-provenance. PubLedge does not adopt the full skill-provenance protocol — only the integrity pattern.
Every PubLedge site exposes the following at the root:
| File | Purpose |
|---|---|
/sitemap.xml |
All canonical URLs |
/feed.xml |
RSS — registry updates and protocol changelog |
/agents.json |
Agent discovery + MCP endpoint pointer |
/llms.txt |
Concise index for LLM consumption |
/robots.txt |
Crawl directives (allow all by default) |
/schema/json/ |
JSON Schemas + JSON-LD context |
These are the primary mechanisms by which AI agents and search engines discover PubLedge content without scraping HTML. They are mandatory.
Every PubLedge instrument carries a disclaimer frontmatter field. The default text:
Suggested prior art. Not official output of any authority.
The disclaimer is rendered prominently in the page header until status: published is reached and the responsible authority has either signed off or expressly declined to do so. Records that move to published without authority sign-off must retain a softened disclaimer indicating that the interpretation is the requesting party's good-faith reading, not an official ruling.
This posture is non-optional. PubLedge exists in part to publish interpretations before an authority issues an official version, so that a public conversation has source material to work from.
When an instrument is replaced:
- The new instrument carries
supersedes: {prior-id}in frontmatter. - The old instrument has its
statusset tosupersededand gainssuperseded_by: {new-id}. - Both remain in the registry; URLs do not break.
- The old instrument's page renders a banner pointing to the new one.
This is mandatory. PubLedge never deletes, only supersedes. The historical record is part of the value.
PubLedge is operator-agnostic. The authority that issued or enforces an instrument is never the operator of the registry. The protocol nonetheless gives that authority a first-class, low-friction way to respond to or correct any record about its own instrument, without operating, hosting, or maintaining anything.
Three mechanisms, lowest friction first:
- Open a GitHub issue or pull request against the record. Standard git. No PubLedge account.
- Point to the authority's own published statement. The record gains an
authority_responseentry whosesourceis the authority's URL; PubLedge quotes, it does not paraphrase. - Supply a signed statement recorded directly in the record's frontmatter under
authority_response.
The authority_response field is an optional list. Each entry:
authority_response:
- from: utah-oaip # authority slug or name
date: 2026-05-18 # ISO date
position: clarifies # see DEFINITIONS.md → Authority response positions
statement: >
The Office's view is that ... .
source: https://... # optional: the authority's own published statement
signature: pgp:0xABCD1234 # optional: detached-signature or PGP fingerprint referenceRendering rules:
- An authority response is rendered prominently on the record page, above the body, visually distinct from the
disclaimer. - A response never deletes or edits the original interpretation. It annotates it. This follows the same never-delete-only-annotate rule as Supersession.
- Multiple responses are kept in chronological order. None is removed when a later one is added.
Non-goals, stated so the posture is unambiguous:
- This is not sign-off-as-a-service. PubLedge does not solicit responses and does not gate publication on them.
- Absence of a response means nothing. It is not implied consent, dispute, or endorsement.
- The authority controls its own words. Where
sourceis present, the authority's published text governs; the in-recordstatementis a convenience copy.
This section reinforces, rather than softens, "Not a regulator": PubLedge gives the regulator a microphone, not a console.
PubLedge content (markdown, YAML, HTML) is licensed CC-BY 4.0. PubLedge code, schemas, and scripts are licensed Apache 2.0. See LICENSE, LICENSE-APACHE, LICENSE-CC-BY-4.0.
Bundled vendor snapshots retain their upstream licenses. The pinned gist core ontology is CC-BY 4.0 (Semantic Arts).
- Not a regulator. PubLedge does not issue rulings.
- Not a law firm. PubLedge templates are prior art, not legal advice.
- Not a blockchain. The integrity layer is plain SHA-256 over plain files.
- Not a CMS. PubLedge ships a static site; editors edit markdown in git.
- Not a replacement for official channels. PubLedge complements official rulings; it does not pretend to substitute for them.
- PRIOR-ART.md — survey of analogous instruments PubLedge draws from
_workshop/TAXONOMY.md— site ontology and bucket definitions_workshop/CONTENT-GUIDE.md— full per-content-type frontmatter and rendering conventionsvendor/gist/— pinned upper ontology snapshot