rules
Manage classification rules that assign document classes, retention policies that control archival behavior, and source hierarchy rules that assign trust weights. This command has six subcommands plus four nested source subcommands.
Usage
unsterwerx rules <SUBCOMMAND>
Subcommands
| Subcommand | Description |
|---|---|
list | List all classification rules |
add | Add a new classification rule |
remove | Remove (retire) a classification rule, or permanently delete with --purge |
reactivate | Reactivate a previously retired rule |
policy | Add a retention policy for a document class |
policies | List retention policies |
resolve | Resolve effective policy for a document, or preview cascade for a class + scope |
assign-scope | Assign a scope to a document (compare-and-set) |
source | Manage source hierarchy trust weight rules |
rules list
Lists all active classification rules with their patterns and target classes.
unsterwerx rules list
Classification Rules
══════════════════════════════════════════════════════════════
[see] seed-contract → contract (active, p=0)
filename: (?i)(contract|agreement|pogodba)
content: (?i)(hereby\s+agree|party\s+of\s+the|terms\s+and\s+conditions)
[see] seed-cv → cv (active, p=0)
filename: (?i)(cv|resume|curriculum)
content: (?i)(experience|education|skills|employment\s+history)
[see] seed-government → government (active, p=0)
filename: (?i)(government|official|gazette)
content: (?i)(public\s+notice|official\s+gazette|decree)
[see] seed-invoice → invoice (active, p=0)
filename: (?i)(invoice|faktura)
content: (?i)(total\s+due|amount\s+payable|invoice\s+number)
[see] seed-legal → legal (active, p=0)
filename: (?i)(legal|law|regulation)
content: (?i)(pursuant\s+to|article\s+\d|statutory|jurisdiction)
[see] seed-report → report (active, p=0)
filename: (?i)(report|analysis|summary)
content: (?i)(executive\s+summary|findings|recommendations)
══════════════════════════════════════════════════════════════
rules add
Adds a new classification rule with filename and/or content regex patterns.
unsterwerx rules add [OPTIONS] --name <NAME> --class <CLASS>
Options
| Option | Short | Type | Default | Description |
|---|---|---|---|---|
--name | string | required | Rule name | |
--class | string | required | Document class (e.g., invoice, contract, report) | |
--filename-pattern | regex | Filename pattern (regex) | ||
--file-type | string | File type filter | ||
--content-pattern | regex | Content pattern (regex) | ||
--priority | integer | 0 | Priority (higher = evaluated first) | |
--match-all | flag | Require all patterns to match | ||
--scope-id | string | Scope identifier (fully-qualified path, e.g., acme/sales) |
Example
unsterwerx rules add \
--name "my-invoices" \
--class invoice \
--filename-pattern "(?i)invoice" \
--content-pattern "(?i)(total\s+due|amount)" \
--priority 10 \
--match-all
rules remove
Retires a classification rule (soft-delete). Retired rules stop matching documents but their classification history is preserved. Use --purge to permanently delete a rule and its classification records.
unsterwerx rules remove [OPTIONS] <NAME>
Arguments
| Argument | Required | Description |
|---|---|---|
NAME | Yes | Rule name or ID |
Options
| Option | Short | Type | Default | Description |
|---|---|---|---|---|
--purge | flag | Permanently delete the rule and its classification records instead of retiring |
Example
# Retire a rule (can be reactivated later)
unsterwerx rules remove my-invoices
# Permanently delete a rule and its classifications
unsterwerx rules remove --purge my-invoices
rules reactivate
Reactivates a previously retired classification rule.
unsterwerx rules reactivate <NAME>
Arguments
| Argument | Required | Description |
|---|---|---|
NAME | Yes | Rule name or ID prefix |
Example
unsterwerx rules reactivate my-invoices
rules policy
Adds a retention policy for a document class. Policies control how long documents are retained and what happens at end-of-life.
unsterwerx rules policy [OPTIONS] --class <CLASS> --name <NAME>
Options
| Option | Short | Type | Default | Description |
|---|---|---|---|---|
--class | string | required | Document class | |
--name | string | required | Policy name | |
--retention-years | integer | Retention period in years | ||
--immutable | flag | Mark as immutable (cannot be modified) | ||
--legal-hold | flag | Enable legal hold (frozen for legal purposes) | ||
--action | string | move | Archive action: move, delete, keep | |
--scope | string | global | Policy scope: global, organization, division, user | |
--scope-id | string | Scope identifier (required for non-global scopes) |
Examples
# Global retention policy
unsterwerx rules policy \
--name "contract-retention" \
--class contract \
--retention-years 7 \
--immutable \
--action move
# Organization-scoped policy (tighter than global)
unsterwerx rules policy \
--name "dod-contract-retention" \
--class contract \
--retention-years 10 \
--immutable \
--action keep \
--scope organization \
--scope-id "DoD"
rules policies
Lists all active retention policies.
unsterwerx rules policies
Retention Policies
══════════════════════════════════════════════════════════════
contract-retention class=contract scope=global retain=7 years IMMUTABLE action=move
org-tighter-contract class=contract scope=organization:DoD retain=10 years IMMUTABLE action=keep
legal-hold class=legal scope=global retain=10 years IMMUTABLE action=keep [LEGAL HOLD]
══════════════════════════════════════════════════════════════
rules resolve
Resolves the effective policy for a specific document or previews the cascaded policy for a class within a scope.
unsterwerx rules resolve [OPTIONS]
Options
| Option | Short | Type | Default | Description |
|---|---|---|---|---|
--document | UUID | Document ID to resolve effective policy for | ||
--class | string | Preview: resolve cascaded policy for a class + scope | ||
--scope | string | Scope path for preview resolution (e.g., acme/sales) |
Examples
# Resolve effective policy for a document
unsterwerx rules resolve --document a1b2c3
# Preview cascaded policy for a class in a scope
unsterwerx rules resolve --class contract --scope acme/sales
rules assign-scope
Assigns a scope to a document using compare-and-set semantics. Documents start with no scope (global). Once assigned, a scope cannot be changed to a different value. Only the same scope can be re-applied.
unsterwerx rules assign-scope <DOCUMENT> --scope <SCOPE_PATH>
Arguments
| Argument | Required | Description |
|---|---|---|
DOCUMENT | Yes | Document ID or UUID prefix |
Options
| Option | Short | Type | Default | Description |
|---|---|---|---|---|
--scope | string | required | Scope path (e.g., acme, acme/sales, acme/sales/alice) |
Example
unsterwerx rules assign-scope a1b2c3 --scope acme/sales
rules source
Manage source hierarchy trust weight rules. These rules assign trust weights to documents based on their source class.
rules source list
Lists all source hierarchy rules.
unsterwerx rules source list
Source Hierarchy Rules
══════════════════════════════════════════════════════════════
[seed-aca] academic weight=5 p=0 (active)
[seed-ai-] ai-generated weight=1 p=0 (active)
[seed-cur] curated weight=2 p=0 (active)
[seed-gov] government weight=3 p=0 (active)
══════════════════════════════════════════════════════════════
rules source set
Creates or updates a source hierarchy rule.
unsterwerx rules source set [OPTIONS] --trust-class <TRUST_CLASS> --weight <WEIGHT>
| Option | Short | Type | Default | Description |
|---|---|---|---|---|
--trust-class | string | required | Trust class: academic, government, curated, ai-generated, or custom | |
--weight | integer | required | Trust weight (1–5, where 5 = highest trust) | |
--pattern | regex | Optional regex pattern to match source names | ||
--priority | integer | 0 | Priority (higher = evaluated first) |
unsterwerx rules source set --trust-class academic --weight 5
rules source remove
Removes a source hierarchy rule.
unsterwerx rules source remove <ID>
| Argument | Required | Description |
|---|---|---|
ID | Yes | Rule ID (prefix match supported) |
rules source resolve
Resolves the effective trust weight for a document or recomputes all provenance records.
unsterwerx rules source resolve [OPTIONS]
| Option | Short | Type | Default | Description |
|---|---|---|---|---|
--document | UUID prefix | Document ID or prefix to resolve | ||
--recompute | flag | Recompute effective_weight for all provenance records |
unsterwerx rules source resolve --document a1b2c3
Weight Resolution for a1b2c3d4...
══════════════════════════════════════════════════════════════
source=local class=curated weight=2 rule=seed-curated Matched trust-class rule
══════════════════════════════════════════════════════════════
Notes
- Seed rules (prefixed
seed-) are created automatically during database initialization and provide baseline classification patterns. - Classification rules use Rust regex syntax. Patterns are case-insensitive when wrapped in
(?i). - The policy cascade enforces that lower scopes (division, user) can only tighten constraints set by higher scopes (organization, global). See Classification Guide for details.