I ran this through AI. This may help or not.
**Mostly no. One true premise, a real insight or two, and one load-bearing premise that is factually out of date — plus a mechanism that cannot exist.**
### What checks out
- The discount is real and it's a *chosen consensus parameter*: `WITNESS_SCALE_FACTOR = 4` (`consensus/consensus.h:21`), weight = `stripped_size*4 + witness_size` implemented as two serialization passes (`consensus/validation.h:135-143`). Your L0/L1 framing is a decent *description* of that measurement.
- You're right that "1 MB" is not what consensus enforces — and stronger than you said: there is **no** 1,000,000 constant and **no** `MAX_BLOCK_BASE_SIZE` anywhere in `src/consensus/`. The only limits are `MAX_BLOCK_WEIGHT{4'000'000}` ("see BIP 141 (network rule)") and `MAX_BLOCK_SERIALIZED_SIZE{4'000'000}` whose own comment says *"only for buffer size limits"*. So "1 MB as Satoshi defined it" is an emergent property, not a rule to restore.
### Where it breaks
1. **"SegWit is a soft fork thus optional" is no longer true.** `DEPLOYMENT_SEGWIT` is a `BuriedDeployment` (`consensus/params.h:34-36`), hardcoded `SegwitHeight = 481824` on mainnet (`kernel/chainparams.cpp:124`), and the code comment says *"Always active unless overridden"* for regtest. No signalling, no opting out.
2. **There is a rule written specifically against your idea.** `CheckWitnessMalleation`: *"No witness data is allowed in blocks that don't commit to witness data, as this would otherwise leave room for spam"* → `unexpected-witness` (`validation.cpp:3913-3920`). A "base-only, witness-unanchored" block is invalid on mainnet. Your `L1 is anchored to L0` is correct — and that's exactly *why* you can't discard L1 as a validator.
3. **You can't filter what you must execute.** Skip witness execution and you can't compute the UTXO set — an attacker's block with bogus segwit spends is accepted by you and rejected by everyone, so your node isn't running "stricter policy", it's not validating. Execute the witness and you've already paid the bandwidth; the only thing left to prune is bytes you already downloaded and acted on. That's disk, not blockspace — and `-prune` is already that (`node/blockmanager_args.cpp:22-35`: a MiB target for `blk*.dat`/`rev*.dat` files, no per-section filter).
4. **The compat claim is inverted.** "Backwards compatible, not forwards compatible" — dropping witness validation is accepting blocks the network rejects, i.e. a *backwards* break, a minority chain, and double-spendable. Core's actual treatment of non-witness-serving nodes is a quarantine: `if (!CanServeWitnesses(peer) && DeploymentActiveAt(...)) { /* We wouldn't download this block or its descendants from this peer. */ return; }` (`net_processing.cpp:1603-1606`). Node *count* buys nothing; only UTXO set and hashrate do. SegWit2x in 2017-18 is the experiment that already ran.
5. **Policy can't reprice the fee market.** Blocks are built by miners at their own `block_max_weight` (`node/miner.cpp:250`, default = consensus max per `policy/policy.h:25`); `-blockmaxweight` shrinks *your* blocks and constrains nobody else's. There is no path from "I don't store these bytes" to "spam costs more on L0."
6. **LN is a counter-example, not an ally.** Commitment/penalty transactions *are* P2WSH witness spends, and anchor outputs exist to exploit the discount. There's no "1 MB enforced at L2"; and eradicating the discount raises every channel open/close.
7. The difficulty paragraph isn't a technical objection — retargeting is a controller on inter-block time, it touches neither subsidy nor `MAX_MONEY`. The honest objections to a spam fork are opt-out/sovereignty and reorg risk to un-upgraded custodians.
### The useful part
The lever you're reaching for **already exists at the layer where it belongs**: `-datacarrier=0` or `-datacarriersize=83` (`init.cpp:709-714`; v30.0 raised the default to 100,000 and permitted multiple OP_RETURN outputs — `release-notes-30.0.md:53-61`). Unilateral, no fork, exactly your "filter junk at my node" instinct. And if the real goal is "witness shouldn't be ~free", the coherent framings are `WITNESS_SCALE_FACTOR` 4→2 or a per-block witness byte cap — both honest consensus changes needing coordination, not policy dressed as physics.
