Extra Languages Core
Shared model for the extra-languages cluster — the deferred-tier home for niche, platform-
specific language and runtime specialists. The spokes are independent stacks, so the value here
is the one cross-cutting discipline they all obey and the rules for keeping the cluster from
drifting into a junk drawer.
1. The decision everything turns on: native idiom + contained boundary
A niche stack fails not on algorithms but on fighting the platform. The rule:
Write the platform's current, native idiom. When you must touch a foreign or legacy runtime,
isolate it behind an adapter — never let its types leak across the app.
This has two halves:
- Native + current. Use the stack's present-day blessed toolkit, not the one your muscle
memory or last year's tutorial reaches for. For Solana that means
@solana/kit first for
client/RPC/transaction code and framework-kit (@solana/client + @solana/react-hooks)
for UI — not web3.js by default.
- Contained boundary. When a dependency demands the legacy runtime (a lib that wants
PublicKey/Transaction/Connection), introduce a single adapter module
(@solana/web3-compat) and keep those types out of the rest of the codebase. The boundary is
a named seam, not a diffusion.
app code (native idiom) ──> [adapter / compat seam] ──> legacy or foreign runtime
^ types stop here ^
2. Scope: what belongs in this cluster
This cluster owns the long tail — stacks with no dedicated cluster of their own. Before
adding or routing, check it isn't already owned:
| If the work is… |
It belongs in… |
| Solana program / dApp / wallet / tx pipeline |
here → solana-dev |
| General Rust (no chain) |
rust / systems-languages |
| Python / JVM backend |
python-backend / jvm |
| EVM / Ethereum / Solidity |
blockchain-web3 |
| A niche stack with no cluster yet |
here (as a new spoke) |
Graduation rule: when a spoke accumulates enough depth to justify its own orchestrator +
core, promote it out of extra-languages rather than letting this cluster bloat.
3. Stack × layer matrix (current spokes)
| Stack |
UI / client |
Core logic |
Toolchain & tests |
Spoke |
| Solana |
framework-kit (@solana/client + react-hooks); Wallet Standard connect |
@solana/kit types/codecs; @solana-program/* builders; Anchor (iterate) or Pinocchio (CU/footprint) programs |
Anchor/Solana CLI pinned; LiteSVM/Mollusk (unit), Surfpool (integration); Codama codegen from IDL |
solana-dev |
As spokes are added, extend this table — one row per stack, same three layers, so the
orchestrator can route by (stack, layer) without reading each spoke.
4. Version & toolchain conventions
The long tail breaks on version drift more than on logic. Therefore:
- Pin and state the language/CLI/framework version for any work (e.g. Anchor + Solana CLI
pair). Solana's moving target lives in
solana-dev's compatibility-matrix.md.
- Recognize toolchain failures as toolchain failures — GLIBC errors, ABI/CLI mismatches, and
dependency conflicts are version problems, not code bugs; route them to the spoke's
common-errors.md, don't rewrite working logic.
- Prefer the newest blessed API surface; quarantine legacy in the adapter seam (§1).
5. Shared guardrails
- Native idiom first; legacy/foreign runtime only behind a named adapter boundary.
- State every trust-boundary fact before acting — for on-chain work: cluster + RPC/ws
endpoints, fee payer + recent blockhash, compute budget, expected account owners/signers/
writability, and the token-program variant (SPL Token vs Token-2022 + extensions).
- Never silently widen a security boundary (signing authority, CPI target, account
writability, scope of a compat adapter) — call it out.
- Pin the toolchain; treat version mismatches as the first hypothesis for niche-stack breakage.
- Deliverables: exact files changed + diffs, install/build/test commands, and a short risk
note for anything touching signing/fees/CPIs/transfers.
- Keep the cluster honest: only long-tail stacks live here; graduate any that outgrow it.
1---2name: extra-languages-core3description: Shared reference for the extra-languages cluster: the one decision every niche stack turns on — write the platform's native, current idiom and contain any foreign/legacy runtime behind an adapter boundary — plus version-pinning conventions, a stack × layer matrix, and the trust-boundary guardrails its spokes share. USE WHEN choosing a niche-stack idiom or default dependency, deciding where a legacy/compat layer goes, pinning a toolchain, or scoping whether work belongs here versus a major-language cluster.4---56# Extra Languages Core78Shared model for the `extra-languages` cluster — the deferred-tier home for niche, platform-9specific language and runtime specialists. The spokes are independent stacks, so the value here10is the **one cross-cutting discipline** they all obey and the rules for keeping the cluster from11drifting into a junk drawer.1213## 1. The decision everything turns on: native idiom + contained boundary1415A niche stack fails not on algorithms but on **fighting the platform**. The rule:1617> **Write the platform's current, native idiom. When you must touch a foreign or legacy runtime,18> isolate it behind an adapter — never let its types leak across the app.**1920This has two halves:2122- **Native + current.** Use the stack's present-day blessed toolkit, not the one your muscle23 memory or last year's tutorial reaches for. For Solana that means **`@solana/kit` first** for24 client/RPC/transaction code and **framework-kit** (`@solana/client` + `@solana/react-hooks`)25 for UI — *not* `web3.js` by default.26- **Contained boundary.** When a dependency demands the legacy runtime (a lib that wants27 `PublicKey`/`Transaction`/`Connection`), introduce a single adapter module28 (`@solana/web3-compat`) and keep those types out of the rest of the codebase. The boundary is29 a named seam, not a diffusion.3031```32app code (native idiom) ──> [adapter / compat seam] ──> legacy or foreign runtime33 ^ types stop here ^34```3536## 2. Scope: what belongs in this cluster3738This cluster owns the **long tail** — stacks with no dedicated cluster of their own. Before39adding or routing, check it isn't already owned:4041| If the work is… | It belongs in… |42|---|---|43| Solana program / dApp / wallet / tx pipeline | **here** → `solana-dev` |44| General Rust (no chain) | `rust` / `systems-languages` |45| Python / JVM backend | `python-backend` / `jvm` |46| EVM / Ethereum / Solidity | `blockchain-web3` |47| A niche stack with no cluster yet | **here** (as a new spoke) |4849**Graduation rule:** when a spoke accumulates enough depth to justify its own orchestrator +50core, promote it out of `extra-languages` rather than letting this cluster bloat.5152## 3. Stack × layer matrix (current spokes)5354| Stack | UI / client | Core logic | Toolchain & tests | Spoke |55|---|---|---|---|---|56| **Solana** | framework-kit (`@solana/client` + react-hooks); Wallet Standard connect | `@solana/kit` types/codecs; `@solana-program/*` builders; Anchor (iterate) or Pinocchio (CU/footprint) programs | Anchor/Solana CLI pinned; LiteSVM/Mollusk (unit), Surfpool (integration); Codama codegen from IDL | `solana-dev` |5758As spokes are added, extend this table — one row per stack, same three layers, so the59orchestrator can route by *(stack, layer)* without reading each spoke.6061## 4. Version & toolchain conventions6263The long tail breaks on **version drift** more than on logic. Therefore:6465- **Pin and state** the language/CLI/framework version for any work (e.g. Anchor + Solana CLI66 pair). Solana's moving target lives in `solana-dev`'s `compatibility-matrix.md`.67- **Recognize toolchain failures as toolchain failures** — GLIBC errors, ABI/CLI mismatches, and68 dependency conflicts are version problems, not code bugs; route them to the spoke's69 `common-errors.md`, don't rewrite working logic.70- Prefer the **newest blessed** API surface; quarantine legacy in the adapter seam (§1).7172## 5. Shared guardrails7374- **Native idiom first**; legacy/foreign runtime only behind a named adapter boundary.75- **State every trust-boundary fact** before acting — for on-chain work: cluster + RPC/ws76 endpoints, fee payer + recent blockhash, compute budget, expected account owners/signers/77 writability, and the token-program variant (SPL Token vs Token-2022 + extensions).78- **Never silently widen** a security boundary (signing authority, CPI target, account79 writability, scope of a compat adapter) — call it out.80- **Pin the toolchain**; treat version mismatches as the first hypothesis for niche-stack breakage.81- **Deliverables**: exact files changed + diffs, install/build/test commands, and a short risk82 note for anything touching signing/fees/CPIs/transfers.83- **Keep the cluster honest**: only long-tail stacks live here; graduate any that outgrow it.