GENE · Specimen 001 · Known limitations

Verbatim from KNOWN-LIMITATIONS.md at the frozen audit candidate (tag rc4-audit-candidate, aca5fcd). sha256 d29d2e87ddc7727218b56a89ff71c5186620978fcbc0ec4dfe7cae5308e34c3b. Nothing here is rounded, shortened or reworded.

GENE RC4: known limitations

Read this first. This applies to the RC4 candidate on branch rc4-candidate in ~/gene-rc4: the V6 mechanism, owner's Decision A of 2026-10-06. It is not deployed and not audited. Every number here comes from the V6 study matrices (docs/rc4/MATRIX.md, ESCALATION.md, BOUND.md), which the production code reproduces byte-identically (docs/rc4/RC3-TO-RC4.md), or from the production test suite (docs/rc4/TEST-RESULTS-RC4.md).

The owner chose security over near-spot support: "I'd rather have a weaker mechanism whose behavior we can defend than a flashy immune system that knowingly transfers value to manipulators." The limitations below are the price of that choice. They must not be hidden, softened or reframed in any UI, document or announcement.

0. The all-time-low anchor: the free permanent disable is CLOSED (V6g-D); a paid ratchet remains

Closed (V6g-D, owner-approved 2026-10-06; docs/rc4/ATL-SEMANTICS.md). Under plain V6, one sell could park the price in empty tick range. A block starting there moved atlTick to the extreme for good: free at launch, about 0.005 ETH plus 177k GENE shortly after, and every later metabolize() reverted with SafeCastOverflow.

RC4 now accepts a block start as the all-time low only when the pool has active liquidity at that price. An oversized placement is skipped (PlacementSkipped) instead of reverting metabolize(). The release tests test/grief/AtlGrief.t.sol (A, B, D, E, H) and PlacementSkip.t.sol (F, G, H) assert this.

Remaining: a liquidity-backed ratchet (paid, never profitable, not a disable). An attacker can still sell through every protocol position to one tick inside the deepest one and hold a block start there. That moves the ATL, and every later protocol buy is placed one GAP below it, so the attacker can repeat it.

What the ratchet costs and does not do:

The cost depends on market depth. It is cheap in a thin, young market and expensive in a deep one.

Measurement (production code)ATL price dropCumulative attacker cost
Thin market (about 30 ETH/epoch of organic trades), one round per epoch from METABOLISM's first epoch, falling (test_C_ratchet_falling)10% / 20% / 40% / 80% / 90%0.014 / 0.057 / 0.23 / 1.35 / 2.8 ETH (24 rounds: 98.6%, 13.3 ETH in total)
Same, sideways (test_C_ratchet_sideways)10% / 20% / 40% / 80% / 90%0.014 / 0.15 / 0.94 / 10.0 / 27.3 ETH
Same, rounds on the last block of each epoch (test_H_ratchet_atEpochBoundary)20% / 40% / 80%0.09 / 0.27 / 1.35 ETH
Study model at 100 ETH/epoch, from epoch 10, falling (study test_r_falling100_from10, reproduced to the wei on production code)about 31%32.7 ETH (20 rounds)
Study, every placement, sideways 100 (test_ra_sideways100)about 24%829 ETH (136 rounds)

Plain statement: in a thin, young market a determined griefer can push all future protocol buying to a small fraction of the price for a few ETH. That is a loss of usefulness, not of funds: no value moves to the attacker, Mass keeps accumulating, and nothing is withdrawable.

Status: accepted as a known economic limitation of RC4 (owner decision, 2026-10-07). The all-time low is a truthful observation: the lowest block-start price at which the pool had active liquidity. In a sufficiently thin market, genuine trades (an attacker's, or anyone's) can move that truthful low down cheaply, because little ETH moves the price far. Every later METABOLISM bid, churn band, IMMUNITY band and REGENERATION buyback is anchored at or below it, so future protocol support can be left far below spot. Nothing in RC4 bounds this. A UI must not imply support near spot.

Why the anchor was not made persistent, and deployment not separated from the traded low. V6's safety rests on one rule: the protocol buys only at or below the lowest price that actually traded. Anyone who bought at that low (a ratchet attacker buys back there by construction) can sell into any protocol bid placed above it. Every tested way around the ratchet broke that rule and was rejected:

1. Falling markets: no near-spot support (by design)

Every protocol buy (METABOLISM bids, the churn tier, IMMUNITY, REGENERATION's buyback) sits at or below the all-time-low block-start price. In a falling market that low is far below spot, so sellers near spot meet no protocol bids. Protocol ETH a seller can reach from spot, after 30 epochs (50 for matured markets), V6 study §7.4:

Market, gross ETH/epochRC3: −5 / −10 / −25%RC4: −5 / −10 / −25%RC4: −25 / −50 / −75 / −90%where RC4's all-time low sits
falling, 1000.21 / 0.52 / 3.110 / 0 / 00 / 10.7 / 14.1 / 14.144.6% below spot
falling, 500(n/a)0 / 0 / 00 / 0 / 0 / 68.478.1% below spot
matured falling, 1000.37 / 0.79 / 3.190 / 0 / 00 / 0 / 23.9 / 23.961.8% below spot
matured falling, 500(n/a)0 / 0 / 00 / 0 / 0 / 116.786.2% below spot

2. IMMUNITY is weak in genuine sell-offs (by design)

IMMUNITY is funded only by net selling: LP_FEE of the newly funded net GENE sold, valued at the epoch's cheapest price. It is placed at or below the all-time low.

3. REGENERATION is near-inert on the genesis curve

REGENERATION buys only within REGEN_PREMIUM_TICKS (~1%) of the all-time-low price, which is the launch price or lower. It spends at most REGEN_SHARE_BPS of the previous epoch's net-flow bid budget.

REGENERATION's cooldown cannot be used to lock it out (R1, 2026-10-07). Before R1, regenerate() started its 300-block cooldown before doing any work, so a call that bought nothing still blocked the keeper. Anyone could keep REGENERATION at zero for a few hundredths of an ETH per epoch (study: 0.02-0.04 ETH per 9-epoch run). Now the cooldown starts only when a call spends its whole allotment. A zero-spend call, a no-allotment call, or a dust call stopped early by the price limit leaves it untouched (test/unit/RegenCooldown.t.sol, test/grief/RegenCooldownAttack.t.sol, docs/rc4/R1-REGEN-COOLDOWN.md).

Consequence: near the genesis curve, the 1% price limit usually stops a buyback before its allotment is spent, so REGENERATION can then be called again in the same block. Every call is still bounded by the ~1% premium over the all-time low, the 0.5 ETH call cap, the 1 ETH epoch cap and the net-flow allowance. Its total spend per epoch is unchanged, and no REGENERATION sandwich was profitable.

4. Small budgets in young markets

All ETH budgets are valued at an epoch's cheapest price, so a budget never exceeds the fee its own flow paid.

5. Remaining positive "assisted" cells (not value transfers)

Across 53,929 matched V6 rows there are 0 SELFFUNDED and 0 TRANSFER cells, classified as defined in docs/rc4/MATRIX.md §1.

6. Coverage limits of the economic evidence

7. Other limitations carried from RC3 (unchanged mechanics)