toolkit

Content inventory · Playbook

Disposition ladder — R1–R5 and its parameters

The rule ladder a page-inventory disposition is decided by, and the thresholds each rung uses. bibarel implements the R1 conversion veto and a KEEP/UPDATE/PRUNE simplification of R3–R5; the rest is recorded here because the numbers are institutional judgement, not defaults, and a client asking “why is 300 words the rewrite line?” deserves an answer someone can check.

Salvaged from config/strategy/rules.base.yaml in the frozen nkp-studio repo. There, the ladder’s order was code and only its parameters were data — the order below is reconstructed from the rule labels those parameters name, so treat the rung order as the intent and the numbers as exact.

The ladder

Rungs are evaluated in order. The first rung that fires decides the page.

Rung Rule Fires when Effect
R1 Conversion veto conversions >= 1 Forced KEEP. Overrides every other signal.
R2 Hub protection Page has <= 0 own traffic but >= 1 trafficked descendant KEEP. A hub with no traffic of its own is still load-bearing.
R3 Value signals + adequacy clicks >= 1 or sessions >= 10 or impressions >= 50 KEEP if also adequate; below rewriteWordCountMin it becomes REWRITE instead.
R4 Kill floor sessions <= 0 and the floor test passes KILL.
R5 Merge Word count below thinWordCountMax MERGE into a stronger sibling.

Parameters

Parameter Value Rung Meaning
conversionVetoMin 1 R1 Any conversion at all vetoes an automated touch
hubOwnTrafficMax 0 R2 “Zero own traffic” ceiling for hub protection
minTraffickedDescendants 1 R2 Trafficked children needed to protect a hub
descendantTrafficMin 5 R2 Clicks-or-sessions a descendant needs to count as trafficked
keepMinClicks 1 R3
keepMinSessions 10 R3
keepMinImpressions 50 R3
rewriteWordCountMin 300 R3 Below this, a page that would KEEP becomes REWRITE
thinWordCountMax 300 R5 Below this, MERGE
killMaxSessions 0 R4 Floor leg
floorMode conservative R4 upgraded only after an operator runs the per-URL backlinks pull for kill candidates. Never auto-detected.
linkHubMinChildren 3 structural In-content links to N captured pages makes a page a hub. Additive only.

rewriteWordCountMin and thinWordCountMax are deliberately equal. Keep them aligned unless the divergence is intentional — the source config says so in a comment, because a gap between them creates pages that are too thin to keep and too long to merge.

Constraints on the resulting plan

These do not decide a single page; they gate the plan as a whole.

Id Constraint Value
C2 A URL with clicks+sessions above this may never 301 to the homepage 0
C4 A kill at or above this click count is an exception needing an explicit human decision 10
C7 Exception groups a reviewer will look at — the one-screen review budget 12
C8 Maximum click depth from root in the IA tree 3
C9 Maximum net-new pages the proposal may declare (SOW page-cap aware) 15
C13 No single owner may hold more than N% of keyword-map rows 10%
C14 At most N% of REWRITE pages may own zero keyword-map rows 50%

C13 and C14 exist because of a measured failure, not a theory: the first real strategy output had the homepage hoarding 282 of 1,166 keyword rows (24%), and 53% of rewrite-disposition pages owned zero keyword rows. A rewrite with no demand thesis is busywork. Head and brand terms belong to the homepage; service-intent demand must distribute to its topical service page.

Clustering controls

Medical sites repeat a few high-frequency tokens — “therapy”, “treatment”, “replacement”, “clinic” — across dozens of distinct intents. A 2-token overlap on those alone fuses unrelated queries into one mega-cluster.

Parameter Value
clusterMinSharedTokens 3
clusterDomainStopwords therapy, replacement, treatment, clinic (additive to the base stopword list, excluded from overlap counting)