You may had some mis-understanding on crush choose algo.
In a simple statement,
1-7 are basic crush rule DSL.
8-13 are tuning parameter for some particular step.
a minimal crush rule consists of
1. take, telling which crush bucket to start with
2. choose/chooseleaf, the repeated choose procedure
3. emit, output selected result
the default replication rule looks like:
take root // from the root bucket
chooseleaf firstn 0 host // recursive to leaf of root, ensuring each selective bucket will not conflict on host level
emit // as it words
a more complex rule like, take one from bucket datecenter-1 and others from datacenter-2 bucket:
take datecenter-1
chooseleaf firstn 1 host
emit
take datacenter-2
chooseleaf firstn -1 host
emit
-EOF