Unsterwerx

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

bash
unsterwerx rules <SUBCOMMAND>

Subcommands

SubcommandDescription
listList all classification rules
addAdd a new classification rule
removeRemove (retire) a classification rule, or permanently delete with --purge
reactivateReactivate a previously retired rule
policyAdd a retention policy for a document class
policiesList retention policies
resolveResolve effective policy for a document, or preview cascade for a class + scope
assign-scopeAssign a scope to a document (compare-and-set)
sourceManage source hierarchy trust weight rules

rules list

Lists all active classification rules with their patterns and target classes.

bash
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.

bash
unsterwerx rules add [OPTIONS] --name <NAME> --class <CLASS>

Options

OptionShortTypeDefaultDescription
--namestringrequiredRule name
--classstringrequiredDocument class (e.g., invoice, contract, report)
--filename-patternregexFilename pattern (regex)
--file-typestringFile type filter
--content-patternregexContent pattern (regex)
--priorityinteger0Priority (higher = evaluated first)
--match-allflagRequire all patterns to match
--scope-idstringScope identifier (fully-qualified path, e.g., acme/sales)

Example

bash
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.

bash
unsterwerx rules remove [OPTIONS] <NAME>

Arguments

ArgumentRequiredDescription
NAMEYesRule name or ID

Options

OptionShortTypeDefaultDescription
--purgeflagPermanently delete the rule and its classification records instead of retiring

Example

bash
# 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.

bash
unsterwerx rules reactivate <NAME>

Arguments

ArgumentRequiredDescription
NAMEYesRule name or ID prefix

Example

bash
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.

bash
unsterwerx rules policy [OPTIONS] --class <CLASS> --name <NAME>

Options

OptionShortTypeDefaultDescription
--classstringrequiredDocument class
--namestringrequiredPolicy name
--retention-yearsintegerRetention period in years
--immutableflagMark as immutable (cannot be modified)
--legal-holdflagEnable legal hold (frozen for legal purposes)
--actionstringmoveArchive action: move, delete, keep
--scopestringglobalPolicy scope: global, organization, division, user
--scope-idstringScope identifier (required for non-global scopes)

Examples

bash
# 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"
Warning: Scoped policies cannot loosen constraints set by higher scopes. A division policy cannot set a shorter retention period than the organization policy.

rules policies

Lists all active retention policies.

bash
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.

bash
unsterwerx rules resolve [OPTIONS]

Options

OptionShortTypeDefaultDescription
--documentUUIDDocument ID to resolve effective policy for
--classstringPreview: resolve cascaded policy for a class + scope
--scopestringScope path for preview resolution (e.g., acme/sales)

Examples

bash
# 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.

bash
unsterwerx rules assign-scope <DOCUMENT> --scope <SCOPE_PATH>

Arguments

ArgumentRequiredDescription
DOCUMENTYesDocument ID or UUID prefix

Options

OptionShortTypeDefaultDescription
--scopestringrequiredScope path (e.g., acme, acme/sales, acme/sales/alice)

Example

bash
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.

bash
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.

bash
unsterwerx rules source set [OPTIONS] --trust-class <TRUST_CLASS> --weight <WEIGHT>
OptionShortTypeDefaultDescription
--trust-classstringrequiredTrust class: academic, government, curated, ai-generated, or custom
--weightintegerrequiredTrust weight (1–5, where 5 = highest trust)
--patternregexOptional regex pattern to match source names
--priorityinteger0Priority (higher = evaluated first)
bash
unsterwerx rules source set --trust-class academic --weight 5

rules source remove

Removes a source hierarchy rule.

bash
unsterwerx rules source remove <ID>
ArgumentRequiredDescription
IDYesRule ID (prefix match supported)

rules source resolve

Resolves the effective trust weight for a document or recomputes all provenance records.

bash
unsterwerx rules source resolve [OPTIONS]
OptionShortTypeDefaultDescription
--documentUUID prefixDocument ID or prefix to resolve
--recomputeflagRecompute effective_weight for all provenance records
bash
unsterwerx rules source resolve --document a1b2c3
Weight Resolution for a1b2c3d4...
══════════════════════════════════════════════════════════════
  source=local    class=curated    weight=2 rule=seed-curated Matched trust-class rule
══════════════════════════════════════════════════════════════

Notes