← All showcases
pointers, not dataCraft
antipatterncraft

Three ways to write .rq badly

Data instead of pointers, prose restating code, one monolithic file. Negative space is taste.

.rq holds intent and links. Sources of truth stay where they belong.

1 — data in the idea (don't)

support_contacts {
    alice: alice@example.com
    bob: bob@example.com
    carol: carol@example.com
}

1 — prefer

support_contacts {
    canonical list lives in ["./data/contacts.json"]
    validated by ["./src/contacts.test.ts"]
}

2 — restating the code (don't)

apply_theme {
    sets documentElement.dataset.theme to mode
    then calls localStorage.setItem with key theme
}

2 — prefer

apply_theme {
    theme preference persists across reloads
    implemented in ["./src/theme.ts".applyTheme]
    @status done
}

3 — one monolithic file (don't)

// everything.rq — 2_000 lines, every team, every domain
// nobody owns it; search returns noise; reviews stall

3 — prefer

import "../billing/interface.rq" as billing
import "../auth/interface.rq" as auth

checkout {
    orchestrates [billing.charge] after [auth.session]
}