Repository navigation
Draw clean lines between modules, locale packs, compliance packs, and boilerplate packs - #28
Draft
RobGrafrath wants to merge 5 commits into
Draft
RobGrafrath wants to merge 5 commits into
RobGrafrath wants to merge 5 commits into
Conversation
WAX-0008 now states the rule in its Decision section: law ships only in a Compliance Pack for the jurisdiction whose law it is, and the Locale Module, Region Pack, and Language Pack that carry a country's structure, formats, and translations carry no law. A rule's mechanism is code in the core or a Module, built once, and a Compliance Pack supplies only its values. The Collective certifies Modules as software and publishes Packs as educational reference material. A new section gives the three tests that place content, law, code, and mechanism, and works them through for the United States: one Locale Module, region.us, and a Language Pack with no law, the federal pack compliance.us, and one Compliance Pack per state. A state has no structural pack of its own, and a Louisiana parish goes in the county field. Each Compliance Pack value records its source, legal force, effective dates, and verification status. The Reference Pack becomes the Vocabulary Pack, shared industry codes that are neither law nor locale, so it cannot be mistaken for law. WAX-0008 also lists the Contract Type Module and the Seed Package, and WAX-0010 and WAX-0009 now list a module type for every construct. The v1 Seed Pack becomes the starter configuration, so it no longer collides with the seed package of WAX-0033. The rest of the record is brought in line. WAX-0007's taxonomy moves address structure to the Locale Module, adds Compliance Pack and Contract Type Module rows, and gives the Debt Type Module real debt types. WAX-0004 gives the US schema to the Locale Module, because a Pack owns no tables. WAX-0011 names its planned federal and state packs as Compliance Packs. HIVE-0009, HIVE-0005, MOD-PURCHASE-0001, and MOD-UNSECURED-0001 say Compliance Pack where they meant law, HIVE-0003 and HIVE-0004 say starter configuration, and the BI reference packs of WAX-0032 become report packs. Rob Grafrath set the model: one structural layer per country, a federal Compliance Pack, and a Compliance Pack for each state. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Rob Grafrath <[email protected]>
Undo the Vocabulary Pack rename. Rob Grafrath defined the Reference Pack as the configuration a typical agency wants that is not compliance, so that it does not start with an empty system: promise to pay, broken promise, and NSF statuses, default roles, departments, and rules, and the procedure that a module follows in each jurisdiction, such as the state-by-state court case flow of the legal module. Court procedure is the bureaucracy of the court system and not compliance. WAX-0008's law test becomes a compliance test. A rule on how a collector must treat a debtor or another party belongs to the Compliance Pack of its jurisdiction, and a procedural rule of a court or another body, such as the format of a filing or the time before a motion may be filed, belongs to the Reference Pack of the module that follows that procedure. The Decision section, the mechanism test, and the United States example say the same, and the Reference Pack has identifiers such as reference.us.collections and reference.us.tx.legal_case_flow. The v1 Seed Pack and the seed pack mentions in WAX-0020, HIVE-0003, and HIVE-0004 become the Reference Pack, the module type is reference_pack in WAX-0009 and WAX-0010, WAX-0007's taxonomy gains a Reference Pack row, and WAX-0011's operation-type packs are Reference Packs. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Rob Grafrath <[email protected]>
Rob Grafrath chose the word boilerplate and one pack for it. The Boilerplate Pack carries all starting content that is not compliance, so that an agency does not begin with an empty system: statuses such as promise to pay, broken promise, and NSF, default roles, departments, rules, workflows, letters, reports, and screens, and the procedure that a module follows in each jurisdiction, such as the state-by-state court case flow of the legal module. The Template Pack is folded in. Every installed pack's content is already the agency's to edit under WAX-0011, so its separate install behavior is not needed, and the overlap on workflow definitions is gone. With both names retired, reference goes back to meaning reference values and template to meaning a letter or disclosure template. WAX-0008 defines the Boilerplate Pack with identifiers such as boilerplate.us.collections and boilerplate.us.tx.legal_case_flow, and its Decision, tests, United States example, Bundle, phasing, and implications use it. The module type is boilerplate_pack in WAX-0009 and WAX-0010, WAX-0007's taxonomy row follows, and WAX-0011, WAX-0020, HIVE-0003, HIVE-0004, MOD-US-0001, the changelog entry, and the modules README say Boilerplate Pack. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Rob Grafrath <[email protected]>
This was referenced Oct 11, 2026
…ith PR 26 PR 26 merged into main, and the branch below this one now carries it, with the conflicts resolved and the rename applied to what PR 26 added. This merge brings that into the stack above it. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Rob Grafrath <[email protected]>
Rob's direction is that a question of law is framed as a core mechanism with a cautious default, with the value set by a pack and flagged for verification, and that conservative starting values an agency may change go in the Boilerplate Pack rather than the Compliance Pack. WAX-0008 now has a fourth content test that says so. The Boilerplate Pack may set the starting value of any setting that a mechanism exposes, and the contributor implications name all four tests. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Rob Grafrath <[email protected]>
6 of 7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes and why
The record named its extensibility constructs in ways that blurred where compliance belongs. WAX-0008 said a Region Pack holds no compliance content, yet HIVE-0009 and two module decisions called the home of compliance rules a region pack. WAX-0007 put address structure in the Region Pack and date formats in the Language Pack. WAX-0004 gave a Region Pack its own schema, although a Pack owns no tables. WAX-0011 called the federal pack a reference configuration, and WAX-0008 gave the Reference Pack the example identifier reference.us.fdcpa, which named a statute, while its Template Pack overlapped the Reference Pack on workflow definitions. This pull request draws the lines once and brings every decision that used the old names into line.
WAX-0008 now states the rule in its Decision section. Compliance rules, which govern how a collector must treat a debtor or another party, ship only in a Compliance Pack for the jurisdiction whose rules they are. The Locale Module, Region Pack, and Language Pack that carry a country's structure, formats, and translations carry none. Starting content that is not compliance, including the procedure that a module follows in a given jurisdiction, ships in a Boilerplate Pack. A rule's mechanism is code in the core or a Module, built once, and a Pack supplies only the values for its jurisdiction. The Collective certifies Modules as software and publishes Packs as educational reference material, so an agency adopts a Pack as a starting point and remains responsible for its own compliance.
A new section gives four tests that place any piece of content and its defaults. The compliance test sends a rule on how a collector must treat a debtor, such as what to disclose, when and how often to make contact, or what to stop doing, to that jurisdiction's Compliance Pack. A procedural rule of a court or another body, such as the format of a filing or the time before a motion may be filed, is not compliance: it is the bureaucracy of that body's process, and it goes in the Boilerplate Pack of the module that follows the process. The code test sends anything that needs code, a table, or validation logic to a Module. The mechanism test builds a rule's mechanism once, such as a contact counter or a calling window in the debtor's local time, and lets each Pack supply its values, in the same way that the legal module builds the mechanism for a court case once and a Boilerplate Pack for each state configures that state's case flow. The default test, added on 2026-10-11, gives a mechanism a cautious default before any pack configures it: a Compliance Pack replaces the default with the value that a jurisdiction's law sets, flagged until verified, and a Boilerplate Pack can set a conservative starting value for any setting that a mechanism exposes, such as whether a bucket accrues interest, when the value is sound practice that an agency may change rather than law.
Worked through for the United States, the US Locale Module carries the address structure with its state codes, the SSN and EIN formats and their validation, and the name components, region.us carries the currency and formats, and a Language Pack carries the translations, none of them carrying compliance. The federal pack compliance.us carries the federal rules, and one Compliance Pack per state carries that state's additions. The US Boilerplate Pack carries the starting content a typical agency wants, such as promise to pay, broken promise, and NSF statuses, default roles, departments, workflows, and letters, and an agency that litigates adds the legal module's Boilerplate Pack for each state in which it files. A state has no Locale Module or Region Pack of its own, because its differences are legal and procedural and not structural, and a Louisiana parish goes in the county field.
The Reference Pack and the Template Pack become one Boilerplate Pack: all starting content that is not compliance, from statuses, roles, departments, rules, and workflows to letters, reports, and screens, so that an agency does not begin with an empty system. With those two names gone, reference goes back to meaning reference values, and template goes back to meaning a letter or disclosure template. Each Compliance Pack value records its source, its legal force, its effective dates, and its verification status. WAX-0008 also lists the Contract Type Module that WAX-0033 added and the Seed Package that WAX-0033 describes, and WAX-0010 and WAX-0009 now list a module type for every construct. The v1 Seed Pack becomes the v1 Boilerplate Pack, because it is that starting content and because its old name collided with the seed package of WAX-0033, which is a different thing.
Interacting decisions
If this touches decisions/wax/
Ten Wax decisions change. Most of the change is naming, and the substantive part is WAX-0008's rule and tests.
Version bumps
Major: WAX-0008 to 2.0, because its Decision section now states the rule and the standing. HIVE-0009 to 3.0, because its Decision section changes wording, and the validator requires a major bump for any change there after #27 took it to 2.0.
Minor: WAX-0004 to 2.1, WAX-0007 to 1.2, WAX-0009 to 1.2, WAX-0010 to 1.2, and WAX-0011 to 1.2.
No bump, because only names change: WAX-0020, WAX-0023, WAX-0032, WAX-0033, HIVE-0003, HIVE-0004, HIVE-0005, MOD-PURCHASE-0001, MOD-UNSECURED-0001, and MOD-US-0001.
CHANGELOG.md gains no entry. The unreleased v0.2.0 entry from #27 names the constructs with these names, and naming a construct is a decision change, not a change to the container.
Choices this draft makes
Stacked on #27
This pull request is based on #27, because most of the files it touches are already changed there, and it names MOD-US-0001, which #27 adds. Its base is the debt-grouping-levels branch, and when #27 merges, its base becomes main.
Checklist
python3 scripts/validate.py --base mainpasses locally, or I am relying on CI to tell me.🤖 Generated with Claude Code