user137446: When importing descriptors with a range less than 1000, it seems to be ignored. Is this deliberate? I could‘t find anything about this in the docs.
To reproduce, first, create an empty wallet:
bitcoin-cli -regtest -named createwallet wallet_name=test disable_private_keys=true blank=true descriptors=true
Import a descriptor with range 10:
bitcoin-cli -regtest -named importdescriptors requests='[{ "desc":  "'"wpkh([9a6a2580/84'/1'/179']tpubDCMRAYcH71Gib1rASZpnMPpJbj7S1Nzmao1nPv5Jrb8pwSUimsH5TmK842UhnGPJbiNThzxhK4BpRUCsjSckpNYkH9kjKGWLd94yhZFN94J/0/*)#rljv8npg"'", "timestamp":"now", "active": true, "range":10}]'
Check the range with listdescriptors:
{
  "wallet_name": "test",
  "descriptors": [
    {
      "desc": "wpkh([9a6a2580/84'/1'/179']tpubDCMRAYcH71Gib1rASZpnMPpJbj7S1Nzmao1nPv5Jrb8pwSUimsH5TmK842UhnGPJbiNThzxhK4BpRUCsjSckpNYkH9kjKGWLd94yhZFN94J/0/*)#rljv8npg",
      "timestamp": 1666876980,
      "active": true,
      "internal": false,
      "range": [
        0,
        999
      ],
      "next": 0
    }
  ]
}

In contrast, if I import a descriptor with a range larger than 1000, it seems to be respected:
bitcoin-cli -regtest -named importdescriptors requests='[{ "desc":  "'"wpkh([9a6a2580/84'/1'/180']tpubDCMRAYcH71GibuLuWcDkwmmY1gXkXhf162QuEHxkMpZPSi7xck2eGQ6MRGKxNTeY8P1FiFTPCLA5x7qZpFx84fnnrNQFpSnUCwd1nPG8Mk9/0/*)#u49n3vuy"'", "timestamp":"now", "active": true, "range":2000}]' 
Check the range again with listdescriptors:
(…)
{
      "desc": "wpkh([9a6a2580/84'/1'/180']tpubDCMRAYcH71GibuLuWcDkwmmY1gXkXhf162QuEHxkMpZPSi7xck2eGQ6MRGKxNTeY8P1FiFTPCLA5x7qZpFx84fnnrNQFpSnUCwd1nPG8Mk9/0/*)#u49n3vuy",
      "timestamp": 1666876980,
      "active": true,
      "internal": false,
      "range": [
        0,
        2000
      ],
      "next": 0
    }


user129640: Every time we call the DescriptorScriptPubKeyMan::TopUp method (which happens quite a lot internally, including whenever we add a new descriptor) it automatically adjusts the range-end to be at least as big as (next index + keypool size).
If you launch bitcoind with specifying a keypool smaller than the range you want to use (e.g. bitcoind -regtest -keypool=5), you will observe the behaviour you expected.
(Thank you for providing the steps to reproduce.)

137446: <p>When importing descriptors with a range less than 1000, it seems to be ignored. Is this deliberate? I could‘t find anything about this in the <a href="https://developer.bitcoin.org/reference/rpc/importdescriptors.html" rel="nofollow noreferrer">docs</a>.</p>
<p>To reproduce, first, create an empty wallet:</p>
<p><code>bitcoin-cli -regtest -named createwallet wallet_name=test disable_private_keys=true blank=true descriptors=true</code></p>
<p>Import a descriptor with range 10:</p>
<p><code>bitcoin-cli -regtest -named importdescriptors requests='[{ &quot;desc&quot;:  &quot;'&quot;wpkh([9a6a2580/84'/1'/179']tpubDCMRAYcH71Gib1rASZpnMPpJbj7S1Nzmao1nPv5Jrb8pwSUimsH5TmK842UhnGPJbiNThzxhK4BpRUCsjSckpNYkH9kjKGWLd94yhZFN94J/0/*)#rljv8npg&quot;'&quot;, &quot;timestamp&quot;:&quot;now&quot;, &quot;active&quot;: true, &quot;range&quot;:10}]'</code></p>
<p>Check the range with <code>listdescriptors</code>:</p>
<pre><code>{
  &quot;wallet_name&quot;: &quot;test&quot;,
  &quot;descriptors&quot;: [
    {
      &quot;desc&quot;: &quot;wpkh([9a6a2580/84'/1'/179']tpubDCMRAYcH71Gib1rASZpnMPpJbj7S1Nzmao1nPv5Jrb8pwSUimsH5TmK842UhnGPJbiNThzxhK4BpRUCsjSckpNYkH9kjKGWLd94yhZFN94J/0/*)#rljv8npg&quot;,
      &quot;timestamp&quot;: 1666876980,
      &quot;active&quot;: true,
      &quot;internal&quot;: false,
      &quot;range&quot;: [
        0,
        999
      ],
      &quot;next&quot;: 0
    }
  ]
}
</code></pre>
<p>In contrast, if I import a descriptor with a range larger than 1000, it seems to be respected:</p>
<p><code>bitcoin-cli -regtest -named importdescriptors requests='[{ &quot;desc&quot;:  &quot;'&quot;wpkh([9a6a2580/84'/1'/180']tpubDCMRAYcH71GibuLuWcDkwmmY1gXkXhf162QuEHxkMpZPSi7xck2eGQ6MRGKxNTeY8P1FiFTPCLA5x7qZpFx84fnnrNQFpSnUCwd1nPG8Mk9/0/*)#u49n3vuy&quot;'&quot;, &quot;timestamp&quot;:&quot;now&quot;, &quot;active&quot;: true, &quot;range&quot;:2000}]' </code></p>
<p>Check the range again with <code>listdescriptors</code>:</p>
<pre><code>(…)
{
      &quot;desc&quot;: &quot;wpkh([9a6a2580/84'/1'/180']tpubDCMRAYcH71GibuLuWcDkwmmY1gXkXhf162QuEHxkMpZPSi7xck2eGQ6MRGKxNTeY8P1FiFTPCLA5x7qZpFx84fnnrNQFpSnUCwd1nPG8Mk9/0/*)#u49n3vuy&quot;,
      &quot;timestamp&quot;: 1666876980,
      &quot;active&quot;: true,
      &quot;internal&quot;: false,
      &quot;range&quot;: [
        0,
        2000
      ],
      &quot;next&quot;: 0
    }
</code></pre>
 129640: <p>Every time we call the <code>DescriptorScriptPubKeyMan::TopUp</code> method (which happens quite a lot internally, including whenever we add a new descriptor) <a href="https://github.com/bitcoin/bitcoin/blob/1bad29fe02096b269858b192a4a91c785a44e505/src/wallet/scriptpubkeyman.cpp#L2130" rel="nofollow noreferrer">it automatically adjusts</a> the range-end to be at least as big as (next index + keypool size).</p>
<p>If you launch bitcoind with specifying a <code>keypool</code> smaller than the range you want to use (e.g. <code>bitcoind -regtest -keypool=5</code>), you will observe the behaviour you expected.</p>
<p><em>(Thank you for providing the steps to reproduce.)</em></p>
