Skip to content

feat(glossary): add 5 community-proposed terms (cNFT unified pool batch)#47

Open
zupy-fmartinelli wants to merge 3 commits intosolanabr:mainfrom
zupy-fmartinelli:proposal/kuka-batch-2026-04-19
Open

feat(glossary): add 5 community-proposed terms (cNFT unified pool batch)#47
zupy-fmartinelli wants to merge 3 commits intosolanabr:mainfrom
zupy-fmartinelli:proposal/kuka-batch-2026-04-19

Conversation

@zupy-fmartinelli
Copy link
Copy Markdown
Contributor

@zupy-fmartinelli zupy-fmartinelli commented Apr 19, 2026

Glossary Expansion — Kuka Agent Proposals

New Terms (5)

Proposed by the Kuka teaching agent during a session with @zupy-fmartinelli (Zupy) while closing the cNFT unified-pool epic. All 5 come from concrete production experience — concepts the team had to invent words for during an incident and recovery.

ID Category Summary
bubblegum-asset-pda zk-compression The deterministic PDA that is a compressed NFT's on-chain identity. Common pitfall: persisting the mint transaction signature as asset_id — it identifies the tx, not the asset.
cnft-tree-pool zk-compression A shared pool of Bubblegum Merkle trees with a picker policy (usually least-used first), replacing per-tenant trees. Amortizes upfront rent and eliminates per-tenant scaling logic.
mint-kill-switch security Default-on feature flag that makes minting paths refuse to execute. Pattern: "fail closed" — protects against bugs and retry storms.
retry-storm infrastructure Failure mode where a job queue keeps replaying a persistent on-chain failure, burning SOL on every attempt.
non-retryable-error infrastructure The contrapartida: an error classification that explicitly signals "do not reenqueue" — the primary mitigation for retry storms.

How they connect

The three infra/security terms form a closed triangle:

retry-storm ←──mitigated-by──→ non-retryable-error
      ↑                               ↓
      └────both-paired-with──→ mint-kill-switch ──subtype-of──→ circuit-breaker

The two zk-compression terms anchor onto bubblegum, compressed-nft, merkle-tree, concurrent-merkle-tree, canopy-depth.

Validation

All 5 pass validate-term-proposal.ts:

  • kebab-case unique IDs, no collisions
  • categories valid (one of the 14)
  • definitions within 50-500 chars
  • all related refs resolve against current main
  • no alias collisions
  • i18n pt/es terms provided

Provenance

Generated by Kuka 🎓 during real teaching work, not synthesized artificially. The cNFT unified pool epic that sourced these terms shipped to production on 2026-04-19 — the pattern-naming became part of post-incident knowledge transfer.

Terms proposed by Kuka agent during teaching conversations with
@WebMaster (Zupy) while wrapping up the cNFT unified pool epic:

- bubblegum-asset-pda (zk-compression): Bubblegum Asset PDA
- cnft-tree-pool (zk-compression): cNFT Tree Pool
- mint-kill-switch (security): Mint Kill-Switch
- non-retryable-error (infrastructure): Non-Retryable Error
- retry-storm (infrastructure): Retry Storm

All 5 passed schema validation and cross-reference existing terms
(bubblegum, merkle-tree, pda, circuit-breaker, defense-in-depth,
transaction-retry, idempotency, ...). i18n pt/es included.
zupy-fmartinelli added a commit to zupy-fmartinelli/solana-glossary that referenced this pull request Apr 19, 2026
Bug surfaced in production on 2026-04-19 while opening a proposal batch
PR via `submit-proposals.ts --pr`. Two symptoms:

1. commit message came out with empty slots where term IDs should be:
     -  (zk-compression): Bubblegum Asset PDA
     -  (zk-compression): cNFT Tree Pool
   instead of the expected `bubblegum-asset-pda (zk-compression): ...`.

2. `gh pr create` failed outright with errors like
     /bin/sh: 1: bubblegum-asset-pda: not found
     /bin/sh: 1: validate-term-proposal.ts: not found
   (one per backtick in the body) and returned exit code 1, so
   `pr_url` came back null even though the branch + commit had been
   made successfully.

Root cause: both `commitProposals` and `submitPr` embedded the message/
body into the shell command string via template literal, only escaping
double quotes. Any backtick in the text (plentiful: term IDs are
formatted as `` `id` ``, and the PR body had an inline code block
mentioning `validate-term-proposal.ts`) was interpreted as command
substitution by /bin/sh, which then tried to execute each ID as a
shell command.

Fix: pipe the message via stdin using the native "read from stdin"
options — `git commit -F -` and `gh pr create --body-file -`. execSync
accepts an `input` option that pipes a string to stdin of the spawned
process, so there is no shell quoting step at all.

Validation: full submit-proposals --pr flow run end-to-end, produced a
real PR (solanabr#47 against solanabr/solana-glossary) with correct commit
message and correctly-rendered body. typecheck clean.
Terms added in this batch were missing the required depth field,
breaking CI validation. Assigned depths based on category patterns:

- non-retryable-error (infrastructure): 4
- retry-storm (infrastructure): 3
- mint-kill-switch (security): 4
- bubblegum-asset-pda (zk-compression): 4
- cnft-tree-pool (zk-compression): 4
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.

1 participant