Page actions
instrument mechanism / verified-clean
Cap Table Dilution (Simple) mechanism
The inspectable method record for Cap Table Dilution (Simple), kept separate from implementation and qualification.
Model scope
NEEDS_REVIEW because the exact option-pool convention, price-per-share share-count basis, and dilution definition are not specified. The fourth vector intentionally identifies an inconsistency in the supplied formula/model: adding pool shares to the denominator while leaving existing holders' share counts unchanged causes the listed Employees ownership to rise from 70% to 63% only when the pre-round ownership is correctly computed as 70%; the original expected values of 54% and 36% were arithmetically invalid. The implementation should explicitly model whether the new pool is created from pre-money shares, post-money shares, or an existing pool top-up.
- The price-per-share formula is not stated; under the usual convention it is pre-money valuation divided by total pre-round fully diluted shares, but the treatment of existing option shares is unspecified.
- The input is a new option pool percentage, while the formula requires option_pool_shares. The conversion is ambiguous: a target percentage of post-round fully diluted shares requires solving option_pool_shares = pool_pct × (pre_shares + new_shares + option_pool_shares), whereas a percentage of pre-round shares uses a different calculation.
- The dilution % formula is missing. It must define whether dilution means the percentage-point decrease in ownership or the relative decrease from pre-round ownership.
- The formula does not explicitly define the investor and option-pool rows required for the stated post-money cap table output.
Units and conventions
- All share counts are shares, not percentages, and all monetary inputs use the same currency.
- Pre-money valuation is divided by total pre-round fully diluted shares to calculate price_per_share.
- For these test vectors, new option pool % means the option pool's percentage of post-round fully diluted shares; therefore option_pool_shares = pool_pct × (pre_shares + new_shares + option_pool_shares).
- Dilution is reported both as percentage-point decrease and relative decrease from pre-round ownership: relative dilution = (pre% - post%) / pre%.
- Ownership percentages are calculated using the post-round denominator pre_shares + new_shares + option_pool_shares.
Inspectable vector
One of 4 source-bound review vectors:
{
"inputs": {
"pre_round_cap_table": {
"Alice": 600000,
"Bob": 400000
},
"raise_amount_usd": 1000000,
"pre_money_valuation_usd": 5000000,
"new_option_pool_pct_post_round": 0.1
},
"expected_outputs": {
"price_per_share_usd": 5,
"new_shares": 200000,
"option_pool_shares": 133333.333333,
"post_round_cap_table_pct": {
"Alice": 45,
"Bob": 30,
"New investor": 15,
"Option pool": 10
},
"dilution_pct_points": {
"Alice": 15,
"Bob": 10
},
"relative_dilution_pct": {
"Alice": 25,
"Bob": 25
}
},
"working": "Pre-round shares = 600,000 + 400,000 = 1,000,000. Price/share = $5,000,000 / 1,000,000 = $5. New shares = $1,000,000 / $5 = 200,000. Let pool shares = x. 10% = x / (1,000,000 + 200,000 + x). Therefore x = 0.10 × (1,200,000 + x); x = 120,000 + 0.10x; 0.90x = 120,000; x = 133,333.333333. Total post-round shares = 1,000,000 + 200,000 + 133,333.333333 = 1,333,333.333333. Alice = 600,000 / 1,333,333.333333 = 45%. Bob = 400,000 / 1,333,333.333333 = 30%. Investor = 200,000 / 1,333,333.333333 = 15%. Pool = 133,333.333333 / 1,333,333.333333 = 10%. Alice dilution = 60% - 45% = 15 percentage points; relative dilution = 15% / 60% = 25%. Bob dilution = 40% - 30% = 10 percentage points; relative dilution = 10% / 40% = 25%."
}Failure boundary
BREAK_CLAIMED · SELF_FLAGGED
A zero pre-money valuation makes price_per_share equal to zero, so new_shares requires division by zero and the specification provides no explicit validation behavior. The option-pool percentage also has a material convention ambiguity: treating it as a post-money fully diluted target differs from treating it as a percentage of pre-round shares.
Other records
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.jsonevidence-tranche5/tranche5-results.jsonBOUNDARY_HAZARD_CATALOG.json