RuleStack

Configs

Stacks

Compare

Diff

RuleStack

Configs

Stacks

Compare

Diff

Read API

RuleStack

Configs

Stacks

Compare

Diff

Read API

Configs/Cursor rules/arturogarrido/claudinho

Cursor rule

.cursor/rules/trust-boundary.mdc

Where untrusted input becomes a domain type, and the rules that hold there

Cursor rules

Quality

58/100

Scores the file, not the repository.

Length

597 words

3 headings · 0 code blocks

Repository

27

— · pushed 0 days ago

Last changed

yesterday

First indexed yesterday.
arturogarrido/claudinho/.cursor/rules/trust-boundary.mdcRawGitHub
1---
2description: Where untrusted input becomes a domain type, and the rules that hold there
3globs: packages/core/src/trust/**,packages/core/src/adapters/**,packages/core/src/markets/**,packages/cli/src/statusline.ts,packages/cli/src/marketCache.ts
4alwaysApply: false
5---
6 
7# The trust boundary
8 
9Feed responses and local cache files are untrusted input. They enter through
10`packages/core/src/trust/` and leave as a domain type or as a stated reason they
11could not. Nothing else builds a `Match` or a `MarketSignal` from raw input.
12 
13## Rules
14 
15- **An adapter FETCHES; it does not interpret.** Parsing lives in `trust/`
16 (`trust/espn.ts` is the model). The adapter that also parsed is how `id` and
17 `kickoff` ended up copied verbatim while every string beside them was cleaned.
18- **Record refusal is local, not a provider outage.** `ProviderAdapter` returns
19 plain arrays. Omit malformed, duplicate, or truncated records while keeping
20 readable siblings usable and attributed to the provider. Throw into the
21 degraded path only for transport/JSON failure, or an incomplete payload with
22 no usable records. Parser-local `BoundedList.complete` is diagnostic; never
23 promote one refused record into a batch-wide blackout.
24- **Both paths end at the same constructor.** Live and cache reads call
25 `sealMatch` / `sealMarketSignal`. When they had separate rules, each fix landed
26 on one of them; `core/test/trust-parity.test.ts` asserts they agree, as a JSON
27 round trip, because that is literally what the cache file is.
28- **Text has roles.** `humanLabel` is prose — no controls, no format characters,
29 **no emoji**, bounded by display columns *and* code points. `opaqueId` is
30 checked against an exact grammar. `canonicalTimestamp` re-emits one form and
31 refuses a date that does not exist. `productFlag` GENERATES the flag from the
32 nation.
33- **Never accept a product glyph from input.** While flags travelled through the
34 text filter it needed an emoji carve-out, and a carve-out without a grammar is
35 a covert channel: TAG characters, variation selectors and ZWJ each rode through
36 it. A `🏴` plus 42 tag characters is ONE two-column glyph spelling a full
37 instruction sentence — invisible on a terminal, legible to a model reading
38 `--json`.
39- **Say which kind of failure it is.** `ParseResult` = `valid` /
40 `definitive-none` / `malformed` / `ambiguous` / `unresolved`. For per-item
41 market resolution, `valid`, `definitive-none` and `ambiguous` are stable and
42 cacheable; `malformed` and `unresolved` must not become definitive negatives.
43 A successful provider batch with one malformed sibling is still shared for
44 the coalescing TTL: identical bytes will parse identically, and immediate
45 refetches only waste egress and starve the readable records.
46- **Enrichment completeness reaches the renderer.** Market cache/fetch helpers
47 return `{ signals, complete }`; default-on annotations, dedicated tools,
48 share cards, and structured output retain it. Only a complete empty batch may
49 say "no signal"; an incomplete one warns and carries `marketComplete:false`
50 or `complete:false`.
51- **Bound the work, not just the output.** `takeBounded` slices *before* the
52 per-record map. A surface reports `total`/`shown`/`truncated` from one
53 `BoundedList`; no handler recomputes a count. `total` is exact only when
54 `complete` is true, so incomplete hot-path scans use a nonnumeric `more`
55 marker rather than guessing how many valid records remain. MCP response
56 limiting preflights depth, width, entries, containers, and aggregate text
57 before serialization or recursive shrinking; a byte cap alone does not bound
58 the CPU and allocation spent discovering that a payload is too large.
59- **Fail closed on ABSENCE.** A missing field must be at least as rejecting as a
60 wrong one. Five market gates were `x != null && ...`, so the more malformed
61 payload was the more successful one.
62 
63## Changing this area
64 
65Add the property to `core/test/trust-properties.test.ts` (table-driven off each
66type's declared key list, so a new field fails by default), and **verify it goes
67red** with the rule reverted — a property test you have not made fail is pinning
68nothing. If it is a claim `SECURITY.md` makes, cite the test there;
69`core/test/security-claims.test.ts` fails if a citation rots.
70 

Sections

  • The trust boundary
  • Rules
  • Changing this area

What it covers

do-not

Stack — with the evidence

typescript

(1.00)

javascript

(1.00)

node

(1.00)

biome

(1.00)

cli-tool

(0.90)

vitest

(0.70)

monorepo

(0.60)

pnpm

(0.60)

github-actions

(0.60)

Glob targeting

  • packages/core/src/trust/**
  • packages/core/src/adapters/**
  • packages/core/src/markets/**
  • packages/cli/src/statusline.ts
  • packages/cli/src/marketCache.ts

Format

Cursor rules

The most expressive format here. Many small .mdc files, each with frontmatter declaring when it should load, so a rule about migrations only enters context when a migration is open. Costs the most to maintain and only one editor reads it.

What the corpus says about it

Repository

Owner
arturogarrido
Language
—
License
—
Archived
no

All configs in this repo

Also in arturogarrido/claudinho

Diff this repo’s formats

One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?

The other instruction files in this repository
RepositoryFormatStackCoversScoreChanged
arturogarrido/claudinho.cursor/rules/bundle-bracket-pr.mdc · 27Cursor rulestypescriptjavascript+7buildtesttesting-strategygit+179/1002 days ago
arturogarrido/claudinho.cursor/rules/change-discipline.mdc · 27Cursor rulestypescriptjavascript+7no sections30/100yesterday
arturogarrido/claudinho.cursor/rules/release-discipline.mdc · 27Cursor rulestypescriptjavascript+7lint-formatgitperformancedeployment+163/1002 days ago
arturogarrido/claudinho.cursor/rules/surface-parity.mdc · 27Cursor rulestypescriptjavascript+7lint-formattesting-strategyperformancedo-not68/1002 days ago
arturogarrido/claudinhoAGENTS.md · 27AGENTS.mdtypescriptjavascript+7setuptestlint-formatstyle+884/100yesterday
arturogarrido/claudinhoCLAUDE.md · 27CLAUDE.mdtypescriptjavascript+7lint-formatperformanceagent-behaviour72/1002 days ago
Diff against .cursor/rules/bundle-bracket-pr.mdc Diff against .cursor/rules/change-discipline.mdc Diff against .cursor/rules/release-discipline.mdc Diff against .cursor/rules/surface-parity.mdc Diff against AGENTS.md Diff against CLAUDE.md

Similar configs

Same format, overlapping stack, ranked by quality.

Same format, overlapping stack, ranked by quality
RepositoryFormatStackCoversScoreChanged
hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126Cursor rulesgobun+5setupbuildtestlint-format+6100/1003 days ago
TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 45Cursor rulestypescriptpytest+15testlint-formatstylearch+5100/1003 days ago
dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+15setuptestlint-formatstyle+799/1003 days ago
deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1Cursor rulestypescriptnextjs+5setuptestlint-formatstyle+799/1003 days ago
markstev/mark-starter.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+14setuptestlint-formatstyle+699/1003 days ago
Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+13setuptestlint-formatstyle+799/1003 days ago
langflow-ai/langflow.cursor/rules/docs_development.mdc · 153kCursor rulespythonnode+16setupbuildtestlint-format+797/1003 days ago
TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 45Cursor rulestypescriptpytest+15teststyletesting-strategysecurity+397/1003 days ago
RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack