docs: add the AFFIRMATION authoring standard - #758
Merged
Merged
Conversation
AFFIRMATION.adoc was already in use in ten repos and already cited by path from ephapax, but docs/AFFIRMATION-STANDARD.adoc did not exist. This writes the missing standard, derived from a census of the ten affirmations actually in the estate rather than designed ahead of them. Records the genre triad against its two siblings (README is future/ aspirational, EXPLAINME is descriptive/mechanism, AFFIRMATION is a frozen falsifiable instant), the three mandatory parts of trustworthiness (ground truth not memory, a frozen anchor, a signed commit), and the two profiles found in practice: evidential (5 repos) and modal MUST/INTEND/WISH (2 repos). Presence is deliberately NOT gated. A mandated affirmation would be written to satisfy a gate rather than a reader. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QMTyDv9CoJo5PfeNzyp519
Contributor
|
Warning Review limit reachedNext included review available in 39 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Three list items and one table cell had been rewrapped into one- and two-word
orphan lines ("be quoted on.", "explicit", "which", "those", "runs.") during
the 80-column pass. AsciiDoc renders them identically, so the defect was
invisible to `asciidoctor --failure-level=WARN`; it only shows in the source.
No wording changes. Source now wraps at 80 columns with no orphans.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QMTyDv9CoJo5PfeNzyp519
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
|
hyperpolymath
enabled auto-merge (squash)
September 9, 2026 00:39
hyperpolymath
added a commit
to hyperpolymath/rsr-template-repo
that referenced
this pull request
Sep 9, 2026
….adoc to profile A (#78) Two foundation fixes to the template. Both matter more here than in an ordinary repo, because every repository scaffolded from this template inherits whatever this one carries. ## 1. The six standards reusable pins were 43 commits behind All six callers were pinned at `571cc734`. Measured against `compare/571cc734...8f2ee508` filtered to `.github/workflows/`, **five of the six reusables genuinely changed** in that range: | Reusable | Delta in range | |---|---| | `governance-reusable.yml` | +145 / -143 | | `hypatia-scan-reusable.yml` | +98 / -22 | | `scorecard-reusable.yml` | +92 / -9 | | `secret-scanner-reusable.yml` | +24 / -1 | | `rust-ci-reusable.yml` | +4 / -4 | | `mirror-reusable.yml` | unchanged | So this is real staleness, not a cosmetic bump — and it is very likely how the estate-wide startup-dead governance suite propagated in the first place: new repos were scaffolded stale. **Pin target liveness.** `8f2ee508` is standards `main` HEAD, and all six reusable blobs were confirmed present at that ref with `contents/<path>?ref=<sha>`. A `commits/<sha> --jq .sha` probe is not a liveness test — `jq` prints the literal string `null` on a `gh` error object, so that probe reports every dead pin as alive. **No permissions patch accompanies this, deliberately.** At `8f2ee508` the reusables no longer require `actions: read`: `secret-scanner-reusable.yml` carries a comment documenting the removal, and `governance-reusable.yml` is `permissions: {}`. Adding `actions: read` to the job-level blocks here would have been the wrong cure. The pin bump alone is the cure. `.github/workflows/actions.lock` tracks *actions*, not reusable-workflow refs, and needs no change — verified by grep. ## 2. `docs/AFFIRMATION.adoc` was missing five of the twelve profile A sections hyperpolymath/standards#758 derives an AFFIRMATION authoring standard from the affirmations already written across this estate. The template's skeleton predates it. Added: *Companion documents and repo metadata (cross-check)*; *The honest state (one breath)* with its four required subsections (what is solid and how we checked · the honest nuance you must not lose · known-incomplete but honestly fenced · outstanding / weak / refuted); *Reproduce it yourself*; *One-line characterisation (quote this)*; *Joint attestation*. The anchor table gained the two mandatory fields it lacked — **Permalink** and **Working-tree delta at verification** — moved ahead of the state sections as the standard orders them, and now carries the required tag ban and drift warning. Prose the previous skeleton got right is preserved verbatim: the trio table, the three moving parts, "no intentional overclaim", and the standing invitation to refute. ### Two things this PR deliberately does *not* change - **Placement.** I initially recorded this file as missing and drafted a root copy; that was my error — it already existed at `docs/`. The standard permits root or `docs/`, and `README.adoc` already links `docs/AFFIRMATION.adoc`, so `docs/` stands. - **Token convention.** Only tokens already in the template's vocabulary are used (`{{PROJECT_NAME}} {{OWNER}} {{REPO}} {{FORGE}} {{MAIN_BRANCH}} {{AUTHOR}} {{AUTHOR_EMAIL}} {{PROJECT_DESCRIPTION}}`), and fill-at-signing fields keep the existing `<...>` convention, so `check-no-placeholders.sh` stays satisfied after instantiation. ## Verification - `asciidoctor --failure-level=WARN` clean on the edited AsciiDoc. - All six workflow files confirmed to read `@8f2ee508` with no stragglers. - Both commits signed (`%G? == G`) with the `@users.noreply` author. ## Depends on hyperpolymath/standards#758 — the standard this skeleton now conforms to. The `link:{std-docs}/AFFIRMATION-STANDARD.adoc[]` reference in the skeleton resolves once #758 lands on standards `main`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01QMTyDv9CoJo5PfeNzyp519 --------- Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



docs/AFFIRMATION-STANDARD.adocdid not exist, yet ten repos already carry anAFFIRMATION.adocandephapaxcites this exact path. This adds the missing standard.Derived, not invented
Written after reading all ten affirmations in the estate in full (affinescript, typed-wasm, ephapax, tropical-types, KnotTheory.jl, neurophone, echidna, hypatia, my-lang, wokelang), so it codifies what is already practised:
Both profiles are conformant. Forcing one would have made seven of the ten non-compliant overnight by fiat.
What it fixes
Deliberate non-decision
Presence is not gated. An affirmation is optional by design; a mandated one would be written to satisfy a gate rather than a reader.
Verification
asciidoctor --failure-level=WARNrenders clean.options="header"on every table, AsciiDoc admonitions not emoji — per the AsciiDoc style rules in the sibling standard.CC-BY-SA-4.0on line 1 (docs licence, not MPL).git log --show-signature→ good signature,id_ed25519_signing), which is what the standard itself requires of an affirmation.The dangling
ephapaxcitation is recorded in the standard's Derivation section rather than quietly fixed, because a dangling citation is exactly the kind of drift the genre exists to expose.🤖 Generated with Claude Code
https://claude.ai/code/session_01QMTyDv9CoJo5PfeNzyp519