Humanizer 35-Pattern to 25-Pattern Migration Mapping: Complete 3S to 2S Conversion Guide
The Humanizer skill maps original 35-pattern (3S) numbers to new 25-pattern (2S) numbers via a documented translation table where old identifiers consolidate into positions 1-25 (e.g., 1→13, 9→1) with patterns 12 and 23 dropped, enabling seamless migration from legacy versions to v3.0.0+.
The blader/humanizer repository underwent a major reorganization in version 3.0.0, replacing its legacy 35-pattern to 25-pattern migration mapping structure to align with updated AI detection taxonomies. This conversion from the original "3S" numbering scheme to the compact "2S" scheme is fully documented in README.md lines 71-78 and supported by validation scripts to ensure data integrity during upgrades.
Understanding the 3S to 2S Pattern Reorganization
Consolidation Rationale
The original 35 patterns were merged and reordered to eliminate redundancy and align with the latest Wikipedia "Signs of AI writing" taxonomy. This consolidation reduces cognitive load while maintaining comprehensive coverage of AI-generated text indicators, resulting in a stronger, clearer set of 25 detection patterns.
Removed Patterns
Patterns 12 and 23 from the legacy 3S scheme have no equivalents in the new 2S system. According to the source code analysis, these specific indicators were deprecated during consolidation and should be treated as removed during any migration process.
Complete 35-Pattern to 25-Pattern Mapping Table
The authoritative translation between legacy and current numbering is maintained in the repository's README. The full migration mapping is as follows:
| Old (3S) | New (2S) |
|---|---|
| 1 | 13 |
| 2 | 17 |
| 3 | 15 |
| 4 | 16 |
| 5 | 17 |
| 6 | 13 |
| 7 | 12 |
| 8 | 18 |
| 9 | 1 |
| 10 | 6 |
| 11 | 7 |
| 12 | dropped |
| 13 | 11 |
| 14 | 8 |
| 15 | 19 |
| 16 | 19 |
| 17 | 20 |
| 18 | 20 |
| 19 | 21 |
| 20 | 22 |
| 21 | 23 |
| 22 | 22 |
| 23 | dropped |
| 24 | 9 |
| 25 | 13 |
| 26 | 10 |
| 27 | 3 |
| 28 | 4 |
| 29 | 24 |
| 30 | 25 |
| 31 | 2 |
| 32 | 3 |
| 33 | 4 |
| 34 | 5 |
| 35 | 5 |
Note that multiple old patterns may map to identical new positions (e.g., both 15 and 16 map to 19), reflecting the consolidation of similar detection indicators into unified categories.
Implementing Pattern Translation in Code
Python Dictionary Lookup
Store the mapping as a constant dictionary to translate legacy identifiers at runtime. The translate() function handles dropped patterns by returning None:
OLD_TO_NEW = {
1: 13, 2: 17, 3: 15, 4: 16, 5: 17, 6: 13, 7: 12, 8: 18,
9: 1, 10: 6, 11: 7, 12: None, 13: 11, 14: 8, 15: 19,
16: 19, 17: 20, 18: 20, 19: 21, 20: 22, 21: 23, 22: 22,
23: None, 24: 9, 25: 13, 26: 10, 27: 3, 28: 4, 29: 24,
30: 25, 31: 2, 32: 3, 33: 4, 34: 5, 35: 5,
}
def translate(old_number: int) -> int | None:
"""Return the new 2S pattern number or None if the old pattern was dropped."""
return OLD_TO_NEW.get(old_number)
# Example usage
print(translate(9)) # → 1
print(translate(12)) # → None (pattern removed)
Batch Migration of JSON Data
Automate upgrades of stored pattern references using the translation function:
import json
with open("legacy_patterns.json") as f:
data = json.load(f)
for entry in data["patterns"]:
old_id = entry["pattern_id"]
entry["pattern_id"] = translate(old_id)
if entry["pattern_id"] is None:
entry["status"] = "deprecated"
with open("migrated_patterns.json", "w") as f:
json.dump(data, f, indent=2)
CLI and Prompt References
While the Humanizer CLI in v3.0.0+ accepts only 2S pattern numbers, you may encounter legacy documentation referencing 3S identifiers. When writing custom prompts or automation, always translate old references first:
# Legacy reference
"Analyze using pattern #9 (old scheme)"
# Converted for v3.0.0+ compatibility
"Analyze using pattern #1 (new 2S scheme)"
Source Files and Validation
The migration mapping is validated against the skill definition to prevent documentation drift. Key files in blader/humanizer include:
README.md: Contains the canonical mapping table at lines 71-78 in the "Version history" section, serving as the primary reference for the 35-pattern to 25-pattern conversion.SKILL.md: Defines the current 25-pattern (2S) scheme and serves as the source of truth for new pattern behaviors and descriptions.scripts/validate-package.py: Validates consistency between the README table andSKILL.mddefinitions, ensuring the migration mapping remains accurate across releases.AGENTS.md: Documents agent-specific packaging requirements that may reference pattern numbers in configuration files.
Summary
- The 35-pattern to 25-pattern migration mapping consolidates detection indicators while dropping obsolete patterns 12 and 23.
- Legacy pattern 9 maps to new pattern 1, while patterns 15 and 16 both converge on pattern 19.
- Implement translation using the
OLD_TO_NEWdictionary withNonechecks for removed patterns. - Reference
README.mdlines 71-78 for the canonical table andscripts/validate-package.pyfor automated validation. - Update all custom prompts and automation scripts to use 2S pattern numbers before deploying Humanizer v3.0.0+.
Frequently Asked Questions
Which patterns were removed in the 3S to 2S migration?
Patterns 12 and 23 from the original 35-pattern scheme were dropped entirely and have no equivalents in the new 25-pattern system. Any automation referencing these specific pattern numbers should flag them as deprecated or remove them entirely during migration to prevent null pointer exceptions.
Where is the official 35-pattern to 25-pattern mapping documented?
The authoritative translation table resides in README.md at lines 71-78 within the "Version history" section of the blader/humanizer repository. This table is tested against SKILL.md via scripts/validate-package.py to ensure the documented mapping matches the actual skill implementation.
How do I handle multiple old patterns mapping to the same new pattern?
When consolidating data, treat converging mappings (such as old patterns 15 and 16 both mapping to new pattern 19) as merging duplicate indicators. The translate() function returns the same integer for both inputs, allowing your migration script to deduplicate entries automatically by checking for existing keys before insertion.
Does the Humanizer CLI accept old 3S pattern numbers?
No, the Humanizer CLI and skill interface in v3.0.0+ exclusively recognize the 2S numbering scheme. You must translate legacy pattern references using the migration table before passing them to current API endpoints or command-line interfaces, as the system no longer maintains backward compatibility for 3S identifiers at runtime.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →