docs: two-tier true north — public BUILDERS.md, star pointer, npm claim corrected - #20
Merged
Merged
Conversation
…, npm claim corrected Sean's call: two documentation tiers. Internal operating log for our agents, published contract for outside developers. Origin (TrustShell vs TrustMarket vs direct) is an AUTHORIZATION input, not a third documentation axis -- per-origin docs on every surface would reintroduce the N-tables problem this change removes. THREE THINGS. 1. BUILDERS.md -- the published tier. What is actually installable today, what is stable versus what will move, the three-outcome reporting rule the reputation layer depends on, the anti-Sybil counterparty gate, and what an outside builder must NOT design against. It states plainly that tier-gated capability is largely not enforced in code today -- the schema carries a minimum-tier field on permissioned resources and nothing in the engine reads it -- rather than letting a builder infer a guarantee from a column name and ship a security control that assumes the platform is gating for them. Capability is framed as a property of the principal, not the entry surface. If it varied by surface, the surface would become the attack surface and the most open door would be the one everyone picked. 2. THE NPM CLAIM IN CLAUDE.md WAS WRONG, MEASURED AND CORRECTED. It said this repo is "published as @hyperdag/protocol on npm". It is not: npm view returns 404 for @hyperdag/protocol, @hyperdag/identity-erc8004 and @hyperdag/reputation-zkp. The claim was read off the npm badge at the top of README.md while the README's own "Known broken / not live" table three screens down said it 404s. A badge is a link, not a measurement -- same class as reading "-stub" in a filename as evidence about production. The one published package is @hyperdag/trustshell@1.3.0, and BUILDERS.md sends builders there. 3. THE MESH TABLE IS GONE; a star replaces it. The five-row sibling table added here on 2026-09-08 was already wrong when it merged -- trustrails-dev is live and was not in it -- and the shape was the defect. The Trust* ecosystem spans TrustShell, TrustMarket, TrustRepID, TrustRails, TrustTrader, TrustCRE, TrustEscrow and TrustMedical plus third-party builders; a per-repo list of all siblings is N tables of N rows, and forgetting one fails silently. Every repo now names true north and nothing else. README.md links BUILDERS.md above the existing trustshell install line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F3yrSVaGDLirLw4itQJ5wK
Strix Security ReviewNo security issues found. Updated for Reviewed by Strix |
This was referenced Sep 8, 2026
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.
Description
Sean's decision: two documentation tiers. An internal operating log for our own agents, and a published contract for outside developers building on the ecosystem. Origin — TrustShell agent vs TrustMarket agent vs direct integration — is an authorization input, not a third documentation axis; per-origin docs on every surface would reintroduce exactly the N-tables problem this change removes.
1.
BUILDERS.md— the published tierWhat is actually installable today, what is stable versus what will move, the three-outcome reporting rule, the anti-Sybil counterparty gate, and what an outside builder must not design against.
Two things in it are worth calling out because most projects would omit them:
CLAUDE.mdandrepid-engine/LESSONS.md. Those are readable — the repos are public — but they are an operating log, not a contract, and reading them as an API guarantee will mislead.Capability is framed as a property of the principal, not the entry surface. If it varied by surface, the surface would become the attack surface, and the most open door — the one we actively want outside builders to use — would be the one everyone picked. The ladder is earned RepID tier, which is already ERC-8004-anchored (portable) and already demoted on unique-counterparty count (unfarmable). A second private trust ladder would be neither portable nor auditable.
2. The npm claim in
CLAUDE.mdwas wrong — measured and correctedThat file, merged earlier today, said this repo is "published as
@hyperdag/protocolon npm." It is not.I read it off the npm badge at the top of
README.md— while the README's own "Known broken / not live" table, three screens further down, said plainly that it 404s. A badge is a link, not a measurement. Same class as reading-stubin a filename as evidence about production, which is the errorrepid-engine/CLAUDE.mdalready records.BUILDERS.mdsends builders to@hyperdag/trustshell, the one package that exists, and names the badge as a known trap.3. The mesh table is gone; a star replaces it
The five-row sibling table added here earlier today was already wrong when it merged —
DealAppSeo/trustrails-devis live and was not in it. The shape was the defect, not the missing row.The ecosystem spans TrustShell, TrustMarket, TrustRepID, TrustRails, TrustTrader, TrustCRE, TrustEscrow and TrustMedical on the same HAL / RepID / ERC-8004 / x402 harness, plus third-party builders. A per-repo list of all siblings is N tables of N rows: adding a surface means editing every other repo, and forgetting fails silently — the new surface is simply unlisted, nothing breaks, and an agent landing there sees no pointer.
Every repo now names true north and nothing else. One line per repo; a new surface touches only itself; no table exists to go stale.
README.mdlinksBUILDERS.mdabove the existing trustshell install line.Type of change
How Has This Been Tested?
Documentation only — three files, no code paths touched, nothing built or imported differently.
Every factual claim in
BUILDERS.mdwas measured rather than carried over:npm view <pkg> versionrun against all four packages; output above.README.md's live table, not restated from memory.REPID_API_KEYStier is rate-limiting only —src/middleware/rateLimit.ts:28,32inrepid-engineare the only consumers; nothing else reads it. This is why the doc separates the throughput axis from the capability axis.min_tier_requiredis unenforced — the column exists onpermissioned_vaultsin the generated database types, andgrepacrossrepid-engine/src(excluding the generated types file) returns no reader. This is the claim the doc makes to builders, so it was verified as a negative before being published as one.main— stated from this repo's own "Known broken / not live" table.NOT CHECKED: whether any consumer outside
repid-engine/srcenforcesmin_tier_required— the doc's wording is scoped to "nothing in the engine reads it" for that reason, and tells builders to enforce their own boundaries regardless.Checklist:
🤖 Generated with Claude Code
https://claude.ai/code/session_01F3yrSVaGDLirLw4itQJ5wK
Generated by Claude Code