Skip to content

docs: add status banners, citation metadata and a named rights holder - #3

Merged
kschlt merged 2 commits into
mainfrom
claude/project-thread-g04bim
Sep 23, 2026
Merged

kschlt merged 2 commits into
mainfrom
claude/project-thread-g04bim

Conversation

@claude

@claude claude Bot commented Sep 22, 2026

Copy link
Copy Markdown

Requested by Kornelius · project thread

Merge order: merge this after the open change that adds the commit-time guard against private emails and names. Before merging, this branch takes that version of main in and passes the guard.

Before: A reader who landed on a single protocol file from a search result or link could not tell that the protocol is experimental or which version it is. The main protocol file is headed "Human–AI Discovery Protocol" and nothing explained that name. There was no citation metadata, so every citation was improvised. Both licence files named "earnedshape contributors" as rights holder, which names no one who can grant or enforce the licence.

After: Every protocol file states its status and version under its heading. The README explains the old title. CITATION.cff gives one form to cite. Both licences name kschlt as rights holder.

This PR adds a status line to every protocol file, a README sentence on the working title, a CITATION.cff, and a named rights holder in both licence files.

How

  • Status line. The same line sits directly under the H1 of all 11 Markdown files under protocol/, including protocol/observation-model/: > **Status:** experimental, protocol v0.2. Rules may still change between versions. It has no links, so it is byte-identical at both directory depths. A version linking to the changelog was rejected because the relative path differs between the two directories.
  • Working title. The protocol heading is not renamed in this PR. One sentence at the end of the README's licence and version paragraph says "Human–AI Discovery Protocol" is the earlier working title.
  • Citation. CITATION.cff (CFF 1.2.0) lists one author, the alias kschlt, with no email and no affiliation (the owner's choice). It also has both licences (MIT, CC-BY-4.0), version 0.2 (the protocol version) and the four repository topics as keywords. date-released and a DOI are left out until the first tagged release. An entity author "earnedshape contributors" was rejected for the same reason as the old copyright line.
  • Rights holder. LICENSE and LICENSE-DOCS now read Copyright (c) 2026 kschlt. The licence terms are unchanged.
  • Lint baseline. tools/known-findings.txt is keyed by line number. The status line adds two lines above the two accepted findings, so they move from 06:112 to 114 and from 07:89 to 91. They are the same findings, and nothing new is accepted.

Acceptance List

Derived from the acceptance criteria of BAN, CIT.

  • Every Markdown file under protocol/, including protocol/observation-model/, carries the same one-line status banner stating experimental and v0.2 directly under its heading — proof: eval:protocol-banner-grep (every file under protocol/ matches the banner line) — Verify: for f in $(find protocol -name '*.md'); do sed -n 3p "$f"; done | sort | uniq -c prints one line with count 11
  • The README contains exactly one sentence naming "Human–AI Discovery Protocol" as the earlier working title — proof: eval:readme-working-title-grep — Verify: grep -c 'Human–AI Discovery Protocol' README.md prints 1; read the last sentence of the licence and version paragraph
  • The boundary lint exits 0 — proof: boundary-lint (python3 tools/boundary_lint.py .) — Verify: python3 tools/boundary_lint.py . reports 2 finding(s), 0 new, exit 0
  • CITATION.cff exists and is valid Citation File Format 1.2.0 — proof: eval:cff-validate (cffconvert --validate or an equivalent CFF schema check) — Verify: cffconvert --validate in the repository root, or validate against the CFF 1.2.0 JSON schema
  • LICENSE and LICENSE-DOCS name the rights holder instead of "earnedshape contributors" — proof: eval:license-holder-grep — Verify: grep -n Copyright LICENSE LICENSE-DOCS shows Copyright (c) 2026 kschlt in both; licence terms are otherwise unchanged in the diff
  • The name in CITATION.cff matches the name in both licence files — proof: eval:license-holder-grep — Verify: the only author in CITATION.cff is alias: kschlt, the same string as the two copyright lines
  • The two accepted boundary-lint findings in tools/known-findings.txt move by two lines (06:112 to 114, 07:89 to 91) and no new finding is accepted — Verify: the diff of tools/known-findings.txt changes only those two line numbers; the lint output names the same two findings as known
  • CITATION.cff carries no email, affiliation, date-released or DOI — Verify: read the 17-line file: one author with only an alias, both licences, version "0.2", four keywords

What Was Tested

  • python3 tools/boundary_lint.py . exits 0 with 2 known findings and 0 new.
  • Line 3 of every Markdown file under protocol/ equals the status line (11 of 11).
  • The README names "Human–AI Discovery Protocol" exactly once.
  • CITATION.cff validates against the official CFF 1.2.0 JSON schema (jsonschema, Draft 7, with format checking).
  • Both licence files name kschlt, the same string as the CFF author alias.
  • The diff and commit metadata were checked against the repository's deny list, with no matches. The committed guard script is not on main yet, so the full quality command could not run in this branch. See the merge order above.

Risks

  • Any later edit above line 114 of 06_… or line 91 of 07_… has to shift the matching tools/known-findings.txt entries again, or the lint reports them as new.
  • The CFF version field has to be bumped with each protocol release, starting with v0.2.1.
  • The status line repeats "v0.2" in 11 files, so each version bump also has to update all of them.

🤖 Generated with Claude Code

https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME


Generated by Claude Code

…rking title

Readers often land on a single protocol file from a search result or a
link, without passing through the README. Nothing on those pages said the
protocol is experimental or which version it is. The README also never
explained why the main protocol file is headed "Human–AI Discovery
Protocol" while the project is called earnedshape.

Each of the 11 Markdown files under protocol/, including
protocol/observation-model/, now carries the same status line directly
under its H1:

> **Status:** experimental, protocol v0.2. Rules may still change between versions.

The line has no links, so it is byte-identical at both directory depths.
A version that linked to CHANGELOG was rejected because the relative path
differs between protocol/ and protocol/observation-model/, so the line
could not be the same everywhere. Renaming the protocol heading was out of
scope for this change. Instead, one sentence at the end of the README's
licence and version paragraph says that "Human–AI Discovery Protocol" is
the earlier working title.

tools/known-findings.txt is keyed by line number. The status line adds two
lines above the two accepted boundary-lint findings, so those entries move
from 112 to 114 and from 89 to 91. They are the same two findings. No new
finding is accepted.

Tested: tools/boundary_lint.py exits 0 (2 known, 0 new); line 3 of every
protocol file matches the status line exactly; the README names the
working title exactly once.

Risk: because known-findings.txt is keyed by line number, any later edit
above those lines in either file must shift the entries again.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
People citing the protocol or its research synthesis had nothing to cite
from, so every citation was improvised. CITATION.cff (Citation File Format
1.2.0) at the repository root gives them one form: title, abstract (the
repository description), type software, repository-code, both licences
(MIT for code, CC-BY-4.0 for prose), the four repository topics as
keywords, and version "0.2", which is the protocol version.

Both licence files previously read "Copyright (c) 2026 earnedshape
contributors". That names no one who can grant or enforce the licence.
They now name kschlt, the same alias the CITATION.cff author entry uses.
The username is the published rights holder by choice, so no full name,
email or affiliation appears. The licence terms themselves are unchanged.

Alternatives considered: an entity author named "earnedshape contributors"
was rejected for the same reason as the old copyright line. A
date-released field and a DOI were left out because there is no release or
DOI yet; they belong with the first tagged release.

Tested: CITATION.cff validates against the official CFF 1.2.0 JSON schema
(jsonschema, Draft 7, with format checking); both licence files name
kschlt, matching the CFF alias; the boundary lint passes with no new
findings.

Risk: the CFF version field has to be bumped with each protocol release,
starting with v0.2.1.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3KoTUo8coyqs8Vyx8StME
@claude claude Bot assigned kschlt Sep 22, 2026
@claude
claude Bot requested a review from kschlt September 22, 2026 22:04
@claude

claude Bot commented Sep 22, 2026

Copy link
Copy Markdown
Author

PR Review Verdict

Result: PASS

Deterministic: CI check-run lint (boundary-lint workflow): success on the pinned head; the local run of the same command reports "2 finding(s), 0 new." exit 0. The public-history half of commands.quality (tools/public_guard.py) is not on main or this branch yet; run from its own unmerged commit against this head with the instance deny file: "0 finding(s) in tracked files, commits f0c9dce..HEAD." exit 0 — Tree: kschlt/earnedshape (the PR's own tree; CI check-run plus commands.quality) — Head: 5620334

Acceptance Criteria

  • [met] Every Markdown file under protocol/, including protocol/observation-model/, carries the same one-line status banner stating experimental and v0.2 directly under its heading — Evidence: ran the stated loop: one distinct line, count 11; find protocol -type f lists exactly 11 files, all .md; in all 11, line 1 is the H1, lines 2 and 4 are blank, so line 3 is directly under the heading. The check discriminates: a file missing the line or carrying a variant would print a second distinct line
  • [met] The README contains exactly one sentence naming "Human–AI Discovery Protocol" as the earlier working title — Evidence: grep -c prints 1 (README line 83, last sentence of the licence and version paragraph); no other file in the repository carries a working-title note, so the "once, not in every file" limit holds
  • [met] The boundary lint exits 0 — Evidence: CI lint success on the head; local run on the head tree prints 2 known, 0 new, exit 0
  • [met] CITATION.cff exists and is valid Citation File Format 1.2.0 — Evidence: validated against the official CFF 1.2.0 JSON schema (jsonschema Draft 7, format checker): 0 errors. Negative controls (author with only a malformed email, missing title, unknown SPDX id, cff-version "1.2") each raise 1 error, so the check discriminates. File is UTF-8, LF line endings
  • [met] LICENSE and LICENSE-DOCS name the rights holder instead of "earnedshape contributors" — Evidence: both read Copyright (c) 2026 kschlt; the licence diffs change only that line; no occurrence of "earnedshape contributors" remains anywhere in the tree
  • [met] The name in CITATION.cff matches the name in both licence files — Evidence: parsed the CFF: one author, {alias: kschlt}; the set of holders extracted from both copyright lines is exactly {kschlt}
  • [met] The two accepted boundary-lint findings move by two lines (06:112 to 114, 07:89 to 91) and no new finding is accepted — Evidence: the known-findings.txt diff changes only those two numbers; line 112 of 06 at base is byte-identical to line 114 at head, and line 89 of 07 at base to line 91 at head; the lint names the same two R1 findings as known
  • [met] CITATION.cff carries no email, affiliation, date-released or DOI — Evidence: parsed keys are abstract, authors, cff-version, keywords, license, message, repository-code, title, type, version; the single author has only alias

Findings

  • [advisory][reasoned] The PR claims owner confirmation for the published rights-holder name, but nothing in the repository or the item record shows it. The alias is the repository owner's public GitHub login, so it discloses nothing new. The CIT constraint (the name is the one the owner confirms) is a human check at merge, not a code defect

Not Checked

  • commands.quality as a single invocation on this branch: its guard script is not in this tree, so it was run from the unmerged commit that adds it. The merge order in the PR body (take the guard's main in first) still applies, and the guard has to run again after that rebase
  • cffconvert --validate itself (not installed); the official 1.2.0 JSON schema was used, which the criterion allows as an equivalent
  • How GitHub renders "Cite this repository" for an author entry with only an alias
  • That the CFF keywords match the repository's current GitHub topics
  • Owner confirmation of the rights-holder name (see the advisory finding)

Routed

  • tools/known-findings.txt keys accepted findings by line number, so any edit above an accepted line (like this PR's banner) has to renumber the baseline by hand, or the lint reports a known finding as new. Keying by file, rule and matched term would keep the baseline stable — Landing zone: this project's .aos/input/ (project input, since the proposed change names tools/boundary_lint.py and tools/known-findings.txt; draft returned with this verdict) — Filing: outstanding

Judgment dimensions

  • Code smell: no. The diff is 11 identical banner lines, one README sentence, two copyright lines, one data file and a baseline renumbering
  • Complexity: slightly raised, and paid for by the spec. The protocol version string now lives in 11 banners, CITATION.cff and the README; the PR names this under Risks. The spec asks for the version in each banner, so this is not a finding
  • Need-to-build: yes. CFF is the existing standard for citation metadata; nothing in the repository covered this before
  • Condensed better, not worse: yes. The diff adds no machinery and changes no protocol content (the protocol diff is only the 11 added banner lines)

@claude

claude Bot commented Sep 22, 2026

Copy link
Copy Markdown
Author

Round 1 advisory (rights-holder confirmation): the owner confirmed kschlt as the published rights holder on 2026-09-22. No code change is needed.

The routed finding about keying the lint baseline by line number is filed in the project backlog input for a later change. It is out of scope for this PR.


Generated by Claude Code

@kschlt
kschlt merged commit ddf1062 into main Sep 23, 2026
2 checks passed
@kschlt
kschlt deleted the claude/project-thread-g04bim branch September 23, 2026 05:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants