Jolly Roger Charter

Early draft. The ideas are open for debate, the economic model is untested, and JRCv1 is a working standard, not a licence or a certification. Current status.

Specification · 0.1 draft

The JRCv1 manifest

Rendered from spec/JRC-MANIFEST.md. Schema: jrc-0.1.schema.json.

A jrc.json file is a project's own account of how it meets the six Jolly Roger Charter pillars, with pointers to evidence anyone can check. It is not a licence and not a certification. It is meant to be read critically.

Shape

{
  "$schema": "https://jollyrogercharter.org/spec/jrc-0.1.schema.json",
  "jrc": "0.1",
  "project": { "name": "…", "repository": "https://…", "homepage": "https://…" },
  "assessment": { "kind": "self", "assessor": "name, handle or role", "date": "YYYY-MM-DD", "commit": "abc1234", "method": "…" },
  "pillars": {
    "code_rights":  { "status": "partial", "claims": [ … ], "gaps": [ "…" ] },
    "development":  { … },
    "data":         { "status": "not-applicable", "applicability": "why", "claims": [] },
    "operations":   { … },
    "economics":    { … },
    "governance":   { … }
  },
  "limitations": [ "…" ]
}

All six pillars must be present. Use "status": "not-started" with an empty claims array if you have nothing yet. An honest blank is better than a padded one.

Pillar status (your own judgement)

Value Meaning
not-started Nothing done yet.
exploring Interested, gaps documented; no conformance claim.
partial Some claims with evidence; known gaps remain.
evidenced Every claim has evidence. Still self-reported unless reviewed independently.
not-applicable The pillar doesn't apply. applicability must say why. For example, a static site with no user records can mark data not-applicable.

Claims and evidence

Each claim has an id, a plain-language statement, an evidence array and a verification object.

Evidence kind Fields What jrc does
file path (relative to the manifest; must stay inside its directory), optional sha256 Checks the file exists and, if sha256 is given, that it matches.
url url Records it. Never fetches it: jrc works offline.
command command, optional expect Records it for a reviewer to run. Never executes it.

verification.level is self-reported or independently-reproduced. The second needs a reviewer who is not the assessor, a reviewed date and a report URL. Even then, jrc can't confirm the reviewer is independent, so reports say "reported as independently reproduced (review not verified by jrc)".

candidates lists files that might become evidence (jrc init fills it from filenames). Candidates are never counted as evidence.

What jrc check rejects (exit 1)

Code Problem
E-SCHEMA The manifest doesn't match the schema.
E-PATH Evidence path is absolute or resolves outside the project, including via symlinks.
E-MISSING Evidence file doesn't exist (or is a broken symlink).
E-WEAK-EVIDENCE Evidence is the manifest itself, the whole project directory, or an empty file.
E-UNREADABLE A hashed evidence file can't be read.
E-HASH sha256 doesn't match the file.
E-MISLEADING Prose (names, statements, notes, gaps, limitations) implies an authority JRCv1 doesn't have: certified, accredited, endorsed, officially, awarded, audited by, guaranteed or fully compliant. Text is Unicode-normalised first. A negation directly before the word, optionally with auxiliaries ("not certified", "no one has certified it", "not yet officially certified"), is allowed. Affirming phrases such as "no doubt" or "not only" are not negations. Paths, URLs and commands aren't scanned.
E-PRIVACY Something that looks like an email address, token, API key, private key, bearer credential, password, home-directory path, or a secret in a URL. git@host:repo remotes and CI runner paths are allowed.
E-CONTROL Control, zero-width or bidirectional-override characters anywhere, or line breaks in names, identifiers, paths and URLs. These can hide or forge text in reports and terminals.
E-CONFUSABLE A word mixes Latin with Cyrillic or Greek letters.
E-INDEPENDENT An independence claim is missing reviewer, date or report, or the reviewer matches the assessor or the project after normalisation. Also raised when an independent assessment is made by the project itself. Overlapping names raise warning W-INDEPENDENT.
E-EVIDENCED-EMPTY A pillar says evidenced but a claim has no evidence.
E-NA-REASON not-applicable without applicability.
E-DATE Assessment or review date is in the future.

An incomplete manifest is valid (exit 0). Gaps are the point.

jrc report refuses to write anything while E-PRIVACY or E-CONTROL errors remain, so a leak is never published by accident. A pillar counts as evidenced only when its status is evidenced and every claim's evidence passed. The summary also says how many evidenced pillars are backed by local files, because URLs and commands aren't checked.

Known limits: jrc can't detect hard links to files outside the project, can't tell whether a named reviewer is really independent, and catches only common homoglyph tricks.

Reports

jrc report produces three files from the manifest alone. They're byte-identical on every run, with no clock and no network:

Open questions (RFC welcome)