Refresh the bundled key and align the security documentation - #4
Merged
Conversation
Replaces security/aevust.asc with a current export. The previous
copy predated two changes to the certificate and could not verify
anything signed after either of them:
2026-06-26 signing subkey 0ED9 9C46 B219 2E37 5381 EF4A
C5BE F8A9 FA06 C16F was added, and all signatures
since that date are made by it
2026-07-20 the primary user ID became Aevust <info@rincoin.org>
The primary key fingerprint is unchanged:
ED20 B635 4EE4 526D 01F8 3B53 8B6E 3BF4 5C71 4ECA
The file is the keys.openpgp.org copy, LF, 2,024 bytes armored:
4c28e68d76798efe440fb504a59a4738dbc3192f91a95e2a0c56689bed09fcd8
decoding to 1,308 bytes of OpenPGP data:
53d2953431e8a5790eb9281519a993875c741f1af3719188f231b35219a1b0cb
The rincoin.org Web Key Directory serves 1,153 bytes for
info@rincoin.org, verified 2026-07-23 against both the direct and
the advanced method. The two differ by exactly one packet: a
superseded 2026-04-10 self-signature on the info@rincoin.org user
ID, which the keyserver retains and the WKD copy does not. The key
material, the subkeys and the fingerprint are identical, and either
copy verifies the same signatures.
Rewrites the key-retrieval section around the three channels that
actually serve the key: keys.openpgp.org, the rincoin.org Web Key
Directory, and the copy in this repository. The keyserver is listed
first because it needs no clone; the repository copy is positioned
as the offline fallback rather than the primary route.
The signed provenance certificate names the keyserver and WKD as the
retrieval paths for this key. Until now this file described neither
WKD nor any verification step, so the canonical security policy was
narrower than the artifact that cites it.
Adds three things the section was missing:
- an explicit fingerprint check after import, which is the point
of publishing a fingerprint at all
- a note that signatures since 2026-06-26 come from a signing
subkey, so a copy imported before that date must be refreshed
- a note that the channels may serve byte-different copies: the
keyserver and the repository copy carry a superseded
self-signature that the WKD response does not, so the
fingerprint rather than a file digest is what to verify
The last point is deliberate. Three independently operated channels
cannot be held byte-identical, and an OpenPGP fingerprint covers only
the primary key packet, so the differences are expected rather than
evidence of tampering. Publishing a digest here would have made a
routine difference look like a discrepancy.
Separately, two citations named sections that no longer exist under
the document they named. The Core Role structure, the Version
Numbering Scheme and Version Authority, Network Ratification of
Release Candidates, the Change Submission Discipline and Emergency
Exception, Vacancy Determination, and Succession were relocated from
RIP-0001 to GOVERNANCE.md on 2026-07-07 without normative change:
RIP-0001 §Version Authority
RIP-0001 §Boundary of Official Support and Liability
Nothing normative changes. GOVERNANCE.md is incorporated by reference
into RIP-0001 and carries the same force, so both statements were
already correct; only the pointers were dangling. Canonical Sources
now lists the governance framework and the RIP process as separate
entries, since they are separate documents.
Also states that the roster table is authoritative for verification
keys while governance/core-role.md remains authoritative for role
assignment, matching the allocation in GOVERNANCE.md, and corrects
"the public keys listed above" to the singular, since one key is
listed.
Four statements no longer matched their sources. The Core Role Governance section cited RIP-0001 for the Core Strategic Authority, the version-numbering scheme and the succession procedure. Those sections were relocated to GOVERNANCE.md on 2026-07-07 without normative change. GOVERNANCE.md is incorporated by reference into RIP-0001, so the statement was already correct; only the pointer was dangling. The note on the Block 840,000 hard fork described a "minimum-peer-version floor (PROTOCOL_VERSION 70018)" activating at that height. A MIN_PEER_PROTO_VERSION gate is not adopted, and the decision is a standing one rather than a deferral: RIN3 is a soft fork, so excluding older peers would manufacture the split the flag day exists to prevent, and a peer's protocol version is self-reported and therefore unenforceable against a hostile fork. What ships in v1.1.0 is capability signaling — the PROTOCOL_VERSION bump to 70018 and the NODE_RIN3 service bit — following the pattern of NODE_WITNESS for SegWit and NODE_MWEB for Litecoin's MWEB. It ships with the release; it does not activate at a height. The RIP-0002 status paragraph credited two phase boundaries as validated in production. The emission schedule places boundaries at blocks 210,000, 420,000 and 630,000, and the chain is past all three, so the 2 to 3 boundary belongs in that list as well. Core release references still use the pre-rename numbering. The release formerly prepared as v1.0.7 is v1.1.0, and the wallet-layer guard formerly planned for v1.0.8 is planned for v1.1.1. The rincoin-sim archived artifact remains v1.0.7, which is the simulator's own version and is unaffected by the Core renaming.
The paragraph under the Activation Timeline restated the Status
column of the index and had already drifted from it: RIP-0004 is
Draft in the index and was absent from the prose enumeration.
RIP-0001 §RIP Status places the authoritative status in each RIP's
own preamble, and the index is this file's designated job per
RIP-0001 §Repository Structure, so a third copy in prose can only
fall out of date as RIPs are added or advance.
The prose now carries only what the index does not:
- the evidence for RIP-0002 being Active — enforcement from
genesis via Core v1.0.6, with the Phase 0-1, 1-2 and 2-3
boundaries validated in production
- the reference-implementation state, which RIP-0001 §RIP Status
ties to advancement past Draft: where each implementation
lives, the commits that carry the RIP-0011 mainnet seal, and
which RIPs have none yet
A pointer notes that statuses live in the index above and that each
RIP's preamble is authoritative.
The paragraph above states that the RIP-0009 and RIP-0010 reference implementations are in progress in Core v1.1.0, and the only Core repository linked was the canonical one. That work is in staging and has not reached the canonical repository yet, so a reader following the link could not find what the text said was there. GOVERNANCE.md §Change Submission Discipline and Emergency Exception already describes this two-repository model: development and validation occur in a Core Role holder's working repository, and the official repository is a verified record of reviewed changes rather than a direct editing surface. Naming the staging repository makes that model checkable instead of leaving the reader to infer it. The pointer states the authority relationship rather than only the URL. Staging permits direct commits, which is correct for a working repository and would look otherwise on a repository named rincoin under an organization named rincoin-core. This file already declares that unauthorized forks carry no governance authority, so a second Core repository linked from it has to be positively classified: it carries no governance authority of its own, and only the canonical repository is authoritative for released Core software. This also restores the symmetry SECURITY.md already has on the RIPs side, where the canonical and development repositories are listed separately.
Two of the five entries did not say what the repository they named actually is. The Core entry named only the canonical repository. Core development and staging take place in rincoin-core/rincoin, and the README now names it, so a reader comparing the two documents would find a repository in one that the security policy does not account for. It is listed here with the authority relationship stated, not just the URL: staging carries no governance authority of its own, and changes reach the canonical repository only as reviewed pull requests, per GOVERNANCE.md §Change Submission Discipline and Emergency Exception. The RIPs entry was labelled "Development". Three sources say otherwise, one of them further down this same file: rip-0001 §Security Considerations names both rips.rincoin.org and github.com/Aevust/rincoin-rips as the authoritative source for all official RIPs the DNS TXT record published below carries canonical-rips=https://github.com/Aevust/rincoin-rips the README describes the repository as the canonical source A section titled Canonical Sources calling the canonical RIPs repository a development repository is the kind of discrepancy this file exists to prevent. Both repositories are now labelled explicitly rather than one carrying an unqualified name and the other a qualifier that contradicted the record.
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.
Six commits, one theme: the key material, SECURITY.md and README.md
are brought back into agreement with the ratified text and with what
the code and the chain actually do.
Force-pushed on 2026-07-23 after an interactive rebase. Two commit
bodies were corrected and one sentence in SECURITY.md changed with
them; the other four commits are unchanged.
Key distribution (commits 1–2)
security/aevust.ascis refreshed rather than removed; SECURITY.mdpositions it as the offline fallback behind the keyserver and WKD
rather than as the primary route.
The previous copy predated two changes: the 2026-06-26 signing
subkey and the 2026-07-20 primary-user-ID change. Every signature
made since 2026-06-26 comes from that subkey, so the stale copy
verifies nothing signed since then, and it presents the superseded
primary identity. The new file is the keys.openpgp.org copy, LF,
2,024 bytes armored, decoding to 1,308 bytes of OpenPGP data. The
primary fingerprint is unchanged:
SECURITY.md now documents all three retrieval channels — keyserver,
WKD, repository copy — with an explicit fingerprint check, a note on
the signing subkey, and a note that the channels may serve
byte-different copies of the same key: the keyserver and this
repository carry a superseded self-signature that the WKD response
does not, so the fingerprint rather than a file digest is what to
verify. That difference is exactly one packet — a superseded
2026-04-10 self-signature on the info@rincoin.org user ID — while
key material, subkeys and fingerprint are identical across channels
and either copy verifies the same signatures. Both WKD methods were
checked on 2026-07-23 and serve identical bytes.
Citations (commits 2–3)
The governance sections were relocated from RIP-0001 to GOVERNANCE.md
on 2026-07-07 (95c135c), incorporated by reference and without
normative change. Citations in SECURITY.md and README.md that still
pointed at RIP-0001 section names now point at GOVERNANCE.md.
Only the pointers move.
Factual corrections in README.md (commits 3–5)
(PROTOCOL_VERSION 70018)" activating at that height. No such gate
is adopted — a standing decision, not a deferral. What ships in
v1.1.0 is capability signaling, the PROTOCOL_VERSION bump to
70018 and the NODE_RIN3 service bit, and it ships with the
release rather than activating at a height.
validated in production. The chain is past all three (210,000 /
420,000 / 630,000), and the paragraph now says so.
v1.0.8); they now read v1.1.0 and v1.1.1. The rincoin-sim archived
artifact remains v1.0.7, the simulator's own version.
from the index — RIP-0004 was missing from the Draft enumeration —
and each RIP's preamble is authoritative per RIP-0001 §RIP Status.
What the prose keeps is what the index cannot carry: the evidence
for RIP-0002 being Active and the reference-implementation state.
The RIP-0009 and RIP-0010 reference implementations the text
describes live there and have not reached the canonical
repository, so the only Core link offered could not show them.
The pointer states the authority relationship: staging carries no
governance authority of its own, and only the canonical
repository is authoritative for released Core software.
Repository labels (commit 6)
Canonical Sources in SECURITY.md labelled the canonical RIPs
repository "Development", contradicting RIP-0001 §Security
Considerations, the DNS TXT record published in the same file, and
the README; the Core entry named only the canonical repository. The
staging repository is now listed beside it with its standing stated
— no governance authority of its own; changes reach the canonical
repository only as reviewed pull requests, per GOVERNANCE.md
§Change Submission Discipline and Emergency Exception — and all
three repositories in the section carry an explicit label.
Out of scope, tracked separately
security/*_public.asc; theactual file is
aevust.asc./rip-0001/is gated, so aligning thepattern with the file is a separate PR through the review path.
fix(ci): restrict GITHUB_TOKEN permissions in rip-check(CodeQL warning
actions/missing-workflow-permissions).(to be added)pending theFounder's input.
Neither
GOVERNANCE.mdnor anything under/rip-0001/is touched.