Skip to content

docs: star not mesh — this repo is true north, and the two tiers are named - #687

Merged
DealAppSeo merged 1 commit into
mainfrom
claude/star-pointer
Sep 8, 2026
Merged

DealAppSeo merged 1 commit into
mainfrom
claude/star-pointer

Conversation

@DealAppSeo

Copy link
Copy Markdown
Owner

Replaces the five-row sibling table merged earlier today in #686, and names the two documentation tiers Sean decided on 2026-09-08.

The table was wrong when it merged, and the shape was the defect

DealAppSeo/trustrails-dev is live and was not in it. But the missing row is not the problem — the shape is.

The ecosystem is not five repos. TrustShell, TrustMarket, TrustRepID, TrustRails, TrustTrader, TrustCRE, TrustEscrow and TrustMedical all sit on this same HAL / RepID / ERC-8004 / x402 harness, plus whatever third parties build via TrustMarket. 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 and in the safe-looking direction — the new surface is simply unlisted, nothing breaks, and an agent landing there sees no pointer.

That is precisely the defect the table was added to fix, reintroduced one level up. It is the same lesson already recorded in this file under Test layout about the hand-maintained jest roots list: prefer a discovery rule to a list anywhere this pattern appears.

A star, not a mesh. Every repo names true north and nothing else. One line per repo, a new surface touches only itself, no table exists to go stale.

Two tiers

tier who where
Internal — operating log, dated, changes without notice our agents (CC, XC, GA, the swarm) LESSONS.md, then this file
Published — the contract we keep outside developers building on the ecosystem hyperdag-protocol/BUILDERS.md (DealAppSeo/hyperdag-protocol#20)

Never answer an outside builder from the internal tier. These repos are public so both are readable, but a working log is not a promise — much of both exists to stop one specific past mistake recurring. Answer from BUILDERS.md; if it does not cover the question, that is a gap in BUILDERS.md to fix.

Origin is authorization, not a third tier

Sean raised whether there should be three tiers — internal agents, TrustShell agents, TrustMarket agents — and then answered it: grant controls on the agent regardless of which surface it entered on. That is right, and the security argument is decisive.

If capability varied by entry surface, the surface would become the attack surface — an agent would shop for the most permissive door, and TrustMarket, the door we actively want outside builders to use, would be the one everyone picked. Capability belongs to the principal.

Two things measured while working this out, both recorded in BUILDERS.md rather than assumed:

  • REPID_API_KEYS tier (pro/enterprise) is rate-limiting onlysrc/middleware/rateLimit.ts:28,32 are its only consumers. That is a throughput axis, not a capability axis, and conflating them would equate "pays more" with "has earned trust."
  • permissioned_vaults.min_tier_required exists as a column and nothing in src/ reads it. Same shape as the ecosystem-need multiplier already documented in this file: recorded as though it gates something, gating nothing. BUILDERS.md tells outside builders this explicitly so they do not ship a security control assuming the platform gates for them.

Per-origin docs on every surface would be the same N-tables trap in a different costume.

Verification

  • npm run checkVERIFIED (1 check).
  • tests/lessons-injectable.test.ts10/10. LESSONS.md is untouched by this PR, so the 6000-character injection cap is unaffected — the tier block went in CLAUDE.md, which has no cap, so the capped file did not have to give anything up for it.
  • Documentation only; no code paths touched.

🤖 Generated with Claude Code

https://claude.ai/code/session_01F3yrSVaGDLirLw4itQJ5wK


Generated by Claude Code

Replaces the five-row sibling table added earlier today. It was already wrong
when it merged (trustrails-dev is live and was absent), and the shape was the
defect: a per-repo list of all siblings is N tables of N rows, and forgetting one
fails silently -- the new surface is unlisted, nothing breaks, and an agent
landing there sees no pointer. That is the defect the table existed to fix,
reintroduced one level up.

The ecosystem is not five repos. TrustShell, TrustMarket, TrustRepID, TrustRails,
TrustTrader, TrustCRE, TrustEscrow and TrustMedical all sit on this same
HAL / RepID / ERC-8004 / x402 harness, plus third parties building via
TrustMarket. Every repo now names true north and nothing else.

Names the two tiers Sean decided on 2026-09-08: this file and LESSONS.md are the
INTERNAL tier -- a dated operating log that changes without notice -- and
hyperdag-protocol/BUILDERS.md is the PUBLISHED contract for outside developers.
Never answer an outside builder from the internal tier; a gap there is a gap in
BUILDERS.md to fix.

Origin (TrustShell agent / TrustMarket agent / direct) is an AUTHORIZATION input,
not a third documentation tier. Capability belongs to the principal, not the door:
if it varied by surface, the surface would become the attack surface and the most
open door would be the one everyone picked.

npm run check VERIFIED; lessons-injectable 10/10 (LESSONS.md untouched, cap safe).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F3yrSVaGDLirLw4itQJ5wK
@strix-security

strix-security Bot commented Sep 8, 2026

Copy link
Copy Markdown

Strix Security Review

No security issues found.

Updated for 35f3115.


Reviewed by Strix
Re-run review · Configure security review settings

@strix-security strix-security Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is a documentation-only change to CLAUDE.md. It replaces a hand-maintained five-row table of sibling repository entry points with a "star, not mesh" model (each repo points only to true north), and introduces a two-tier documentation policy distinguishing an internal operating log from a published builder contract. The change touches no application code, introduces no secrets, injection sinks, or authorization changes, and the new guidance ("never answer an outside builder from the internal tier") is security-positive. No security vulnerabilities were identified in the changed code.


Reviewed by Strix
Configure security review settings

@DealAppSeo
DealAppSeo merged commit cc125e6 into main Sep 8, 2026
9 checks passed
@DealAppSeo
DealAppSeo deleted the claude/star-pointer branch September 8, 2026 21:17
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