Filing systems and document addresses
Before the first taxonomy file with a top-levelsystem header is applied, Suchi
has one hidden original system. Unprefixed files keep the existing archive and
paths; there is no enable-systems toggle or prerequisite configuration.
The first prefixed import, for example system = "S01", offers two destinations:
- Use this archive: name the original archive S01 and import into its existing tree, retaining documents, IDs, memberships and document grants.
- Create separately: preserve the original under a distinct code (for example A00) and create S01 for the incoming tree. The preserved archive keeps its name.
^[A-Z][0-9]{2}$ (A00–Z99) and become immutable. Display names
are editable, nonblank and at most 80 Unicode characters. First adoption or
creation uses the file’s name; reimport preserves a locally edited system name.
New systems initially admit only active instance administrators. Administrators
grant direct user memberships separately from document permissions. There are
no system roles, deletion, merge or document-transfer controls.
Official AC.ID notation
and multiple-system notation
add an assigned, category-local ID layer. Suchi deliberately adapts that model:
its filing address identifies a category and always has two components.
- Before system introduction there is no address. The category code (
21) already names the category, and its first digit places it in area20–29. - After introduction,
SYS.ACadds the permanent system code: category 21 in S01 isS01.21.
S01.21 while keeping distinct
numeric URLs. Refiling document 147 to category 22 changes its projection to
S01.22 without renumbering it; both category addresses remain resolvable while
the categories exist. New versions and split children receive their own IDs.
Addresses require an uppercase A00–Z99 system code and a two-digit category.
Area-prefixed forms such as 20.21 are not addresses. Spaces, width variations, Unicode lookalikes,
lowercase codes, and former three-component values such as S01.21.147 are invalid.
A syntactically valid address still needs an existing category and system entry;
document visibility is applied when the resulting Documents view runs.
Selecting a system is Suchi’s simple “choose a filing cabinet” model, not a claim
to reproduce every upstream JD convention. System entry and existing document
ACLs are required; even admins cannot escape an explicit request or token system.
Shared server administrators, host operators and backups remain trusted. This is
application isolation over shared SQLite/CAS/FTS, not independent infrastructure,
per-system encryption or evidence of professional independence. See
Permissions for membership and delegated credentials.
Choose or change a tree
Settings > Archive configuration > Filing tree is a standalone workspace:- Ready-made compares
solo,household,freelance,smb_billingandblank. - Build your own combines at most one focused set in each available decade. Solo and Household use 10–19, 20–29, 30–39 and 50–59; business sets may also use 60–69.
- Import or export owns advanced TOML/HuML file operations.
blank
contains no user categories and needs explicit confirmation. Applying any reviewed
tree or taxonomy import satisfies first-run archive setup.
Solo and Household deliberately use only four user lanes and share their Money,
Health and Home lanes. Their administration lane holds identity, insurance,
vehicles, Memberships & associations (14), Education (15),
Employment (16) and Travel (17).
Freelance and Small business likewise omit generic Banking and
client/customer/vendor/project “records” buckets. Their categories describe a
specific document purpose or workflow stage instead.
All four ready-made trees call their money-management lane Money, and each
has a Bank & card statements category there. The plain label covers personal
investments and borrowing as well as business expenses, tax working papers and
payroll without suggesting a separate financial system.
Each document should have one obvious home:
- Use the most specific category. Purchases & warranties holds things you buy that have no more specific home: a vehicle’s purchase invoice goes to Vehicles, school fees to Education and a hospital bill to Medical billing.
- Personal Travel holds tickets, boarding passes, itineraries, hotel and rental bookings and trip receipts. Visas stay in Identity; travel insurance stays in Insurance.
- Statements go with the account they cover: bank and card statements to Bank & card statements, loan statements to Loans and investment statements to Investments.
- Housing holds ownership and title documents, leases, rent, mortgage agreements, property tax and association charges. Loan statements and EMI schedules stay in Loans; income tax stays in Income tax.
- Personal Medical billing is for provider charges, insurance claims and reimbursement records. Diagnoses, reports and discharge summaries stay in Medical records; medication instructions stay in Prescriptions.
- Client payments and Customer payments hold payments received, remittances and overdue reminders. The invoice itself stays in Invoices out.
- Freelance Briefs & plans is for project scope and planning. Signed legal terms and statements of work stay in Quotes & contracts.
- Freelance Approvals & sign-off is for acceptance and completion evidence. Payment evidence stays with the relevant Money category.
- Tax filings & acknowledgements holds submitted income, GST/sales and similar tax returns with their confirmations. Company, employment, pension and other non-tax submissions go to Corporate & regulatory filings.
.toml or .huml file, or paste its content. A chosen file selects
its format from the extension; pasted content selects TOML or HuML from the
required format header syntax. The File format control remains available
for correction. Preview shows the name, story, version, user tree, generated
structure, category additions and collisions. Changing input, file format or
remaps requires another preview. If relevant destination state changes before
Apply, Suchi preserves your input and asks you to preview again; unrelated
system edits do not invalidate a preview.
Validation checks supported structure, not domain suitability or reliable
classification.
Suchi never fetches remote taxonomy files or requires a catalog service.
Safe import and reimport
Only an initially unconfigured archive can replace its first filing tree, and only when no filed documents (including recoverable Trash) or dependent user configuration would be orphaned. Later imports add to the current filing tree; an empty archive alone is not permission to reset a chosen tree.- Same category code and name preserves the row and local description.
- Different names at one code need explicit skip or an unused same-decade remap.
- Imports never create, change or remove automations.
- System destination, tree, last-import provenance and required jobs commit together; a failure leaves no partial import.
Authoring v1
TOML is the default authoring and export format. HuML remains a first-class alternative with the same schema and behavior. YAML, unknown/duplicate keys, unsupported formats, wrong types and unsupported actions are errors. Validation is offline and bounded to 1 MiB. Files exported by v0.2 may still contain categorykeywords and seeds.automations; import ignores them and keeps the tree.
format, id, positive integer version, nonempty name,
market, language, story. Author IDs match [a-z0-9][a-z0-9_-]*. Optional
system names exactly one filing system; optional metadata is maintainer and
license. Importing or exporting never implicitly licenses your configuration.
Names are at most 80 Unicode characters, story 500, descriptions 240.
Tree form requires explicit areas; areas = [] is a blank tree. Flat authoring
shorthand uses flat = true and 1–9 categories instead of areas. Codes are
11–19 in order; explicit codes must match. Parsing expands it into an area tree;
it does not select the separate runtime flat rendering mode. Database export may
spell the tree as explicit areas rather than preserve the original shorthand.
Never repurpose a category code within an author’s ID or call reordering compatible.
User area starts are 10, 20, 30, 50, 60, 70, 80, 90. Categories belong to
their area’s decade and never end in zero. Do not declare inbox, category-level
protected system flags, 00–09 or 40–49: Suchi generates reserved structure after
raw validation. The optional top-level system = "S01" is distinct and valid.
Both reserved decades are forbidden remap destinations. The index is not a
category or a selectable filing destination.
Export and provenance
--system S01 to select an existing system for unprefixed import or export.
It must agree with a prefixed file. Only the first prefixed import accepts
--existing-system-code A00 to preserve the original separately.
Export creates a validated current snapshot with id = "archive", version = 1,
not a claim that the combined archive equals its last imported file. Source
identity, file version, byte SHA-256, schema version, source hash, and Suchi
release version remain separate provenance. Equivalent HuML and TOML can have
different hashes.
Export contains the filing tree only. Automations, permissions, review history
and documents need a complete backup.
Only validated generated System/49 is removed from raw output. Legacy custom
reserved categories, renamed system rows or a different Inbox produce an
actionable error; Suchi does not hide or automatically renumber those records.
Generated filing index and paths
Before introduction the map isrendered/00-09 System index/00.00 archive.huml; afterwards each system has
rendered/<SYS>/00-09 System index/00.00 archive.huml. It contains the current
system code/name and tree/descriptions, with snapshot id = "archive" and
version = 1. Generated System/49 is implicit.
It is a managed area/category map, not the original authoring file,
the upstream JD register of assigned ID folders, a document inventory or backup.
Do not edit it in place.
Committed filing-tree changes queue a durable taxonomy_index refresh. Server
startup also queues a refresh per system to recover missing/stale indexes. Jobs
build current state when they run and replace the file atomically. Failure preserves
the last complete index and uses normal retries/dead-job reporting. A successful
import with pending work does not mean the physical file has refreshed; CLI-only
imports need the server to process jobs. No document row or CAS blob is created.
After introduction, document projections are rooted at rendered/<SYS>/ using
the immutable code, not the editable display name. The default filing-tree layout
for an illustrative already-returned document is:
undated, title, and the independent __<doc_pk> suffix in both single and
multi-system archives. Explicit templates retain relative behavior;
jd.system.code, jd.system.name, and category-level jd.address are available.
Because jd.address can repeat, a collision-safe explicit layout must also use
doc_pk, or asn where that layout already requires a unique archive serial number.
Renaming a system does not move its root. New and edited templates cannot carry a
file extension: preview, create, and update reject one because Suchi appends the
linked file’s own, .pdf for the searchable copy and otherwise the original’s
type (.jpg, .eml, .docx, …). An unknown type gets none. Templates also
cannot escape the enforced system root or occupy a managed index.
First introduction queues render-only moves for existing live documents. Durable
move journals recover interrupted publication at the current target; cleanup removes
only a verified document CAS link or proved-managed legacy index, never arbitrary
user files. Only the original system’s index writer removes the old root index,
after publishing its named replacement. Startup does not rewrite the whole filesystem.
Stable v1 repairs the absolute two-shard links emitted before v0.1.0
when their blob hash still belongs to that document; unrelated links remain untouched.
Use suchi refile --system S01 --skip-automations for render-only work without
rerunning OCR or classification.
Category API
GET /api/jd/categories/ lists ordinary categories with area labels and optional
q and area filters within the selected system. Category system remains a
protected-row boolean; system_code identifies its filing system. Set a document’s
category with {"jd_category_id":17}: the row must belong to that document’s
system, and runtime row IDs differ from portable category codes. Category addresses
resolve through GET /api/jd/resolve?address=S01.13; the response opens a filtered
Documents view while numeric document IDs and URLs remain exact identity.
Mobile uses ordinary bound-system APIs; taxonomy administration is session-admin web/CLI.
See API and Automations.
Johnny.Decimal is a trademark of Coruscade Pty Ltd. Suchi is independent and
is not affiliated with or endorsed by them.