Veydrin Financial Data Standard

VFDS v1.0

The portable, privacy-preserving data format for household financial sovereignty and trust lifecycle data. Offline-first, encrypted, local-only by design.

VFDS v1.0.0 CC-BY-SA-4.0 DRAFT Builds on VODS
§ 1

Overview

VFDS defines the portable data format for household financial sovereignty and trust lifecycle data. It is a domain specialization of VODS (Veydrin Open Data Standard) and inherits its privacy contract, versioning conventions, and export envelope.

VFDS covers the full financial picture of an individual, household, or trust — including cash flow, net worth, debt, wealth holdings, insurance, goals, and the complete trust ownership hierarchy. All data is structured for offline-first, encrypted, local-only storage. No fields assume network connectivity or cloud persistence.

Conventions. The key words "MUST", "MUST NOT", "SHOULD", and "MAY" in this document follow RFC 2119 and RFC 8174, consistent with VODS v1.0.
Reference implementation. org.ninthstar.nemorith (Nemorith) by the Ninth Star Foundation is the reference implementation of VFDS v1.0.0. If you ship a VFDS-conforming export, open an issue on the protocols repository and we will list it here.

VODS Compliance

A VFDS export is a valid VODS document. The VODS envelope fields sit at the root level alongside the VFDS domain fields — the same pattern used by OHDS and OCEADS. VFDS does not use a payload wrapper.

VODS dependency. VFDS v1.0 requires VODS v1.0. The four VODS envelope fields (vods_version, export_id, export_date, export_mode) are required in every VFDS document. Their authoritative definition is in the VODS spec.
{
  // VODS envelope (required)
  "vods_version": "1.0",
  "export_id":   "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "export_date": "2026-03-11T00:00:00Z",
  "export_mode": "tracked",

  // VFDS root structure
  "vfds_version": "1.0.0",
  "exported_at": "2026-03-11T00:00:00Z",
  "app_version": "0.1.0",
  "vault": { },
  "flow": { },
  "position": { },
  "debt": { },
  "wealth": { },
  "protection": { },
  "goals": { },
  "milestones": [ ],
  "notifications": [ ],
  "settings": { }
}

Annotations (//) are shown for readability. Valid JSON does not permit comments.

Conventions

§ 2

Root Structure

{
  "vfds_version": "1.0.0",
  "exported_at": "<ISO 8601>",
  "app_version": "<string>",
  "vault": { },
  "flow": { },
  "position": { },
  "debt": { },
  "wealth": { },
  "protection": { },
  "goals": { },
  "milestones": [ ],
  "notifications": [ ],
  "settings": { }
}
FieldTypeDescription
vfds_versionstringSpec version (semver)
exported_atISO 8601Export timestamp
app_versionstringNemorith build version
vaultobjectTop-level vault container
flowobjectCash flow layer
positionobjectNet worth layer
debtobjectDebt management layer
wealthobjectPortfolio/holdings layer
protectionobjectInsurance layer
goalsobjectFinancial goals layer
milestonesarrayCross-layer milestone records
notificationsarrayActivity and audit log
settingsobjectApp preferences
§ 3

Vault

The vault is the root container. All financial data, members, documents, and the ownership tree belong to a vault.

{
  "id": "<uuid>",
  "name": "<string>",
  "tier": "<VaultTier>",
  "base_currency_code": "<ISO 4217>",
  "trust_type": "<TrustType?>",
  "lifecycle_stage": "<LifecycleStage?>",
  "created_at": "<ISO 8601>",
  "updated_at": "<ISO 8601>",
  "members": [ ],
  "role_permissions": [ ],
  "documents": [ ],
  "ownership_entities": [ ]
}
FieldTypeReq?Description
idstringreqUUID
namestringreqDisplay name
tierVaultTierreqVault tier (see enum)
base_currency_codestringreqISO 4217 base currency
trust_typeTrustType?trust tierTrust subtype
lifecycle_stageLifecycleStage?trust tierCurrent trust stage
created_atISO 8601reqCreation timestamp
updated_atISO 8601reqLast modified timestamp
Computed (do not export): is_trusttier == "trust"; is_irrevocablelifecycle_stage == "active_irrevocable"

VaultTier

ValueDescription
soloSingle user, no household features
householdMultiple members, shared vault
trustFull trust lifecycle enabled

TrustType (trust tier only)

Value
living_trust
family_trust
business_trust
nonprofit_trust

LifecycleStage (trust tier only)

ValueDescription
creationVault established, roles defined, documents loading
active_revocableFull edit rights, all layers live
conversionIn-progress conversion ceremony
active_irrevocableTerms frozen, documents immutable (add only)
successionPre-staged handoff, quorum or date-based trigger
legacySuccessor Trustees active, Founder profile permanent
continuanceBeneficiary continuation trust with lineage link

Vault > Members

{
  "id": "<uuid>",
  "name": "<string>",
  "role": "<MemberRole>",
  "joined_at": "<ISO 8601>",
  "avatar_initials": "<string?>",
  "is_owner": false
}
ValueLayer AccessNotes
trustorAll layersView-only after irrevocable conversion
trusteeAll layersFull admin within locked terms
co_trusteeAll layersSuccession-capable, confirms conversion quorum
partnerAll layersAdd transactions, manage own accounts
stewardFlow + Position summaryOwn transactions only
beneficiaryOwn allocation onlyView-only
observerSummary dashboardRead-only
successor_trusteeAll layers (dormant)Full admin post-succession
attorneyEntity structure onlyObserver-tier professional
accountantFlow + PositionObserver-tier professional
minorOwn allocation onlyUnderage beneficiary, view-only with guardian oversight

Vault > Role Permissions

Role permissions define what each role can access per layer. Stored per vault to allow customization.

{
  "role": "<MemberRole>",
  "layer_permissions": {
    "flow": "<PermissionLevel>",
    "position": "<PermissionLevel>",
    "debt": "<PermissionLevel>",
    "wealth": "<PermissionLevel>",
    "protection": "<PermissionLevel>",
    "documents": "<PermissionLevel>",
    "milestones": "<PermissionLevel>",
    "members": "<PermissionLevel>",
    "settings": "<PermissionLevel>",
    "trust_lifecycle": "<PermissionLevel>"
  },
  "can_invite_members": false,
  "can_export_data": false,
  "can_initiate_conversion": false,
  "can_trigger_succession": false,
  "can_modify_roles": false
}

PermissionLevel: none | read_only | read_write | admin

Vault > Documents

Encrypted document references. File content is never included in a VFDS export — only metadata. Actual files remain in the encrypted local vault.

{
  "id": "<uuid>",
  "name": "<string>",
  "category": "<DocumentCategory>",
  "size_bytes": 0,
  "notes": "<string?>",
  "added_at": "<ISO 8601>",
  "expires_at": "<ISO 8601?>",
  "is_locked": false
}

DocumentCategory: trust_instrument | will_testament | insurance | property_deed | operating_agreement | power_of_attorney | tax_record | other

Vault > Ownership Entities

The ownership map is a self-referential tree. Each entity may have a parent_id pointing to another entity in the same array. Entities with parent_id: null are root nodes. The tree is infinitely nestable.

{
  "id": "<uuid>",
  "name": "<string>",
  "type": "<EntityType>",
  "parent_id": "<uuid?>",
  "value": "0.00",
  "currency_code": "<ISO 4217?>",
  "notes": "<string?>",
  "created_at": "<ISO 8601>"
}

EntityType: trust | llc | brokerage | bank_account | real_estate | vehicle | insurance | retirement_account | crypto | business_interest | personal_property | beneficiary | other

Trust (root, parent_id: null) ├── LLC (parent_id: trust.id) │ ├── Brokerage (parent_id: llc.id) → wealth.holdings │ └── Real Estate (parent_id: llc.id) → position.assets ├── Bank Account (parent_id: trust.id) └── Beneficiary (parent_id: trust.id)
§ 4

Data Layers

VFDS organizes financial data into seven primary layers beneath the vault container. Each layer is independently versioned within the root structure.

§ 4.1

Flow Layer

Cash flow tracking — transactions, budget categories, recurring items, and bill reminders.

Transactions

{
  "id": "<uuid>",
  "description": "<string>",
  "amount": "0.00",
  "currency_code": "<ISO 4217>",
  "type": "<TransactionType>",
  "category_id": "<uuid?>",
  "date": "<ISO 8601>",
  "member_id": "<uuid?>",
  "created_at": "<ISO 8601>"
}

TransactionType: income | expense

Receipts

{
  "id": "<uuid>",
  "image_path": "<string>",
  "captured_at": "<ISO 8601>",
  "amount": "0.00",
  "merchant": "<string?>",
  "category": "<string?>",
  "notes": "<string?>",
  "linked_transaction_id": "<uuid?>",
  "currency_code": "<ISO 4217>",
  "ocr_text": "<string?>"
}

Subscriptions

{
  "id": "<uuid>",
  "name": "<string>",
  "monthly_cost": "0.00",
  "currency_code": "<ISO 4217>",
  "category": "<string?>",
  "frequency": "<RecurringFrequency>",
  "next_due_date": "<ISO 8601?>",
  "icon": "<string?>",
  "is_active": true,
  "created_at": "<ISO 8601>"
}

Donations

{
  "id": "<uuid>",
  "organization": "<string>",
  "amount": "0.00",
  "currency_code": "<ISO 4217>",
  "frequency": "<RecurringFrequency?>",
  "icon": "<string?>",
  "recurring": false,
  "created_at": "<ISO 8601>"
}

Budget Categories

{
  "id": "<uuid>",
  "name": "<string>",
  "budgeted": "0.00",
  "spent": "0.00",
  "rollover": false,
  "currency_code": "<ISO 4217>",
  "icon": "<string?>",
  "color": "<string?>"
}
Note on spent. The spent field is a period-total snapshot captured at export time. Unlike computed display fields (C6), it is an explicit data point that the importing application needs to restore budget state. It is permitted in exports.
Note on icon and color. These are implementation-specific display hints. icon SHOULD be a string identifier (e.g., Material icon name like "restaurant"). color SHOULD be a hex string (e.g., "#FF5722"). Importing applications that do not recognize these values MAY substitute defaults.
Computed (do not export): remainingbudgeted - spent; percent_used0.0 – 1.0; is_over_budgetspent > budgeted

Recurring Transactions

{
  "id": "<uuid>",
  "name": "<string>",
  "amount": "0.00",
  "currency_code": "<ISO 4217>",
  "is_income": false,
  "frequency": "<RecurringFrequency>",
  "category": "<string>",
  "next_due_date": "<ISO 8601>",
  "is_active": true
}

RecurringFrequency: weekly | biweekly | monthly | quarterly | yearly

Bill Reminders

{
  "id": "<uuid>",
  "name": "<string>",
  "amount": "0.00",
  "currency_code": "<ISO 4217>",
  "frequency": "<BillFrequency>",
  "due_day": 1,
  "autopay": false,
  "category": "<string?>",
  "is_active": true,
  "created_at": "<ISO 8601>"
}

BillFrequency: weekly | biweekly | monthly | quarterly | semiannual | annual

§ 4.2

Position Layer

Net worth snapshot — assets, liabilities, and historical snapshots.

Assets

{
  "id": "<uuid>",
  "name": "<string>",
  "type": "<AssetType>",
  "value": "0.00",
  "loan_balance": "0.00",
  "currency_code": "<ISO 4217>",
  "ownership_entity_id": "<uuid?>",
  "last_updated": "<ISO 8601>"
}

AssetType: cash | savings | investment | retirement | real_estate | vehicle | personal_property | other

Liabilities

{
  "id": "<uuid>",
  "name": "<string>",
  "type": "<LiabilityType>",
  "balance": "0.00",
  "interest_rate": "0.00",
  "minimum_payment": "0.00",
  "currency_code": "<ISO 4217>",
  "debt_account_id": "<uuid?>",
  "last_updated": "<ISO 8601>"
}

LiabilityType: mortgage | auto_loan | student_loan | credit_card | personal_loan | medical_debt | other

Net Worth Snapshots

{
  "id": "<uuid>",
  "net_worth": "0.00",
  "total_assets": "0.00",
  "total_liabilities": "0.00",
  "recorded_at": "<ISO 8601>"
}
§ 4.3

Debt Layer

Debt payoff engine — accounts and active strategy selection.

{
  "accounts": [
    {
      "id": "<uuid>",
      "name": "<string>",
      "debt_type": "<DebtType>",
      "balance": "0.00",
      "interest_rate": "0.00",
      "minimum_payment": "0.00",
      "credit_limit": "0.00",
      "due_day": 1,
      "is_revolving": false,
      "currency_code": "<ISO 4217>"
    }
  ],
  "payoff_strategy": "<DebtPayoffStrategy>"
}

DebtType: credit_card | mortgage | auto_loan | student_loan | personal_loan | home_equity | medical | business_loan | tax_debt | other

DebtPayoffStrategy: avalanche | snowball | custom

Cross-reference. debt.accounts records are the same underlying debts as position.liabilities. The position layer tracks them as liability snapshot records; the debt layer tracks them as active payoff accounts. Implementations SHOULD treat them as parallel views of the same data, not duplicate records.
§ 4.4

Wealth Layer

Portfolio holdings — all asset classes with current valuation.

{
  "id": "<uuid>",
  "name": "<string>",
  "ticker": "<string?>",
  "asset_class": "<AssetClass>",
  "shares": "0.00",
  "price_per_share": "0.00",
  "cost_basis": "0.00",
  "currency_code": "<ISO 4217>",
  "ownership_entity_id": "<uuid?>",
  "dividend_per_share": "0.00",
  "dividend_frequency": "<DividendFrequency?>",
  "notes": "<string?>"
}

AssetClass: stock | etf | mutual_fund | crypto | bond | real_estate | private_equity | annuity | retirement_account | other

DividendFrequency: monthly | quarterly | semiannual | annual | irregular

Watchlist

{
  "id": "<uuid>",
  "ticker": "<string>",
  "name": "<string>",
  "sector": "<string?>",
  "price_target": "0.00",
  "current_price": "0.00",
  "currency_code": "<ISO 4217>",
  "price_updated_at": "<ISO 8601?>",
  "notes": "<string?>",
  "added_at": "<ISO 8601>"
}
Computed (do not export): market_valueshares × price_per_share; gain_lossmarket_value - cost_basis; gain_loss_percent(gain_loss / cost_basis) × 100
§ 4.5

Protection Layer

Insurance policy inventory and coverage gap tracking.

{
  "id": "<uuid>",
  "provider": "<string>",
  "type": "<InsuranceType>",
  "premium": "0.00",
  "premium_frequency": "monthly",
  "coverage_amount": "0.00",
  "deductible": "0.00",
  "currency_code": "<ISO 4217>",
  "ownership_entity_id": "<uuid?>",
  "renewal_date": "<ISO 8601?>"
}

InsuranceType: health | life | auto | homeowners | renters | umbrella | disability | long_term_care | dental | vision | other

Beneficiary Designations

{
  "id": "<uuid>",
  "account_name": "<string>",
  "account_type": "<string>",
  "beneficiary": "<string>",
  "allocation": "<string>",
  "tier": "<BeneficiaryTier>",
  "last_reviewed": "<ISO 8601?>",
  "issue": "<string?>",
  "created_at": "<ISO 8601>"
}

BeneficiaryTier: primary | contingent

§ 4.6

Goals Layer

Financial goals with progress tracking.

{
  "id": "<uuid>",
  "name": "<string>",
  "target_amount": "0.00",
  "current_amount": "0.00",
  "currency_code": "<ISO 4217>",
  "category": "<GoalCategory>",
  "deadline": "<ISO 8601?>",
  "created_at": "<ISO 8601>",
  "is_completed": false
}

GoalCategory: emergency | house | retirement | education | vehicle | travel | custom

Life Events

{
  "id": "<uuid>",
  "name": "<string>",
  "target_date": "<ISO 8601?>",
  "estimated_cost": "0.00",
  "current_saved": "0.00",
  "currency_code": "<ISO 4217>",
  "icon": "<string?>",
  "color": "<string?>",
  "active": true,
  "created_at": "<ISO 8601>"
}
§ 4.7

Milestones

Cross-layer milestone records. May reference net worth targets, savings goals, or lifecycle events.

{
  "id": "<uuid>",
  "title": "<string>",
  "description": "<string>",
  "target_amount": "0.00",
  "current_amount": "0.00",
  "target_date": "<ISO 8601?>",
  "status": "<MilestoneStatus>",
  "currency_code": "<ISO 4217>"
}

MilestoneStatus: upcoming | in_progress | achieved

§ 4.8

Notifications / Audit Log

Activity log and in-app notification records.

{
  "id": "<uuid>",
  "title": "<string>",
  "body": "<string>",
  "type": "<NotificationType>",
  "created_at": "<ISO 8601>",
  "is_read": false,
  "route": "<string?>"
}

NotificationType: info | warning | milestone | security | sync

§ 4.9

Settings

App-level preferences. Exported for cross-device restore. Not vault-specific.

FieldTypeDefaultDescription
base_currency_codestring"USD"ISO 4217 default display currency
show_currency_symbolsbooltrueShow/hide currency symbols in UI
compact_large_numbersboolfalseFormat large numbers as $1.2M
biometrics_enabledboolfalseBiometric authentication
prevent_screenshotsbooltrueFLAG_SECURE screen protection
auto_lock_secondsint60Auto-lock timer in seconds. 0 = immediate. -1 = never
§ 5

Cross-References

#FromToMechanism
1vault.ownership_entitiesselfparent_id → id (recursive tree)
2vault.ownership_entities (brokerage)wealth.holdingsholding.ownership_entity_id → entity.id
3vault.ownership_entities (real_estate, bank_account)position.assetsasset.ownership_entity_id → entity.id
4vault.membersvault.role_permissionsrole field links permission set
5flow.transactions.category_idflow.budget_categories.iddirect UUID reference
6debt.accountsposition.liabilitiesliability.debt_account_id → debt_account.id
7protection.policiesvault.ownership_entities (insurance)policy.ownership_entity_id → entity.id
8vault.documentsvault lifecycleis_locked becomes true on active_irrevocable transition
9milestonesposition.net_worth_snapshotsmilestone amounts track net worth targets
10goals.financial_goalsposition.assetssavings goals feed asset value records
§ 6

Currency Reference

Static reference data. Not user data — not exported in VFDS payloads. Embedded in app.

CodeNameSymbol
USDUS Dollar$
EUREuro
GBPBritish Pound£
JPYJapanese Yen¥
CADCanadian DollarCA$
AUDAustralian DollarA$
CHFSwiss FrancCHF
CNYChinese Yuan¥
INRIndian Rupee
MXNMexican PesoMX$
BRLBrazilian RealR$
KRWSouth Korean Won
NGNNigerian Naira
ZARSouth African RandR
GHSGhanaian Cedi
BTCBitcoin
Note: BTC is not ISO 4217. It is included for practical use. Implementations MUST handle BTC's 8 decimal places (decimal_places: 8).
§ 7

Document Bundle Format (.vfds-bundle)

A .vfds-bundle file is a ZIP archive. A standard VFDS export (vfds.json) contains document metadata only — file contents are never embedded in the JSON payload. For full backup, restore, and migration including actual document files, implementations MUST produce a VFDS Bundle.

Structure

myexport.vfds-bundle ├── vfds.json — standard VFDS export ├── documents/ │ ├── <document-uuid>.enc — AES-256-GCM encrypted file │ └── ... └── bundle_manifest.json — bundle metadata

bundle_manifest.json

{
  "bundle_version": "1.0.0",
  "vfds_version": "1.0.0",
  "created_at": "<ISO 8601>",
  "vault_id": "<uuid>",
  "vault_name": "<string>",
  "document_count": 0,
  "total_encrypted_bytes": 0,
  "encryption": {
    "algorithm": "AES-256-GCM",
    "kdf": "PBKDF2-SHA512",
    "iterations": 310000,
    "salt": "<base64>",
    "iv_per_file": true
  }
}

File Encryption

Each document is encrypted independently:

<document-uuid>.enc ├── [12 bytes] — random IV (GCM nonce) ├── [N bytes] — AES-256-GCM ciphertext └── [16 bytes] — GCM authentication tag

The encryption key is derived from a user-supplied passphrase via PBKDF2-SHA512 using the salt stored in bundle_manifest.json. The same key covers all files in the bundle. The passphrase is never stored.

Bundle-level encryption (optional). Implementations MAY additionally encrypt the entire ZIP archive with a second passphrase. When applied, the file extension SHOULD be .vfds-bundle.enc. Per-file encryption of the documents/ folder is sufficient for most use cases. Bundle-level encryption is recommended only for high-threat exports such as attorney handoff or succession transfer.

Import / Restore Rules

Suggested UX Labels

ActionLabel
Export data only"Export Financial Data" → saves vfds.json
Export data + documents"Full Backup" → saves .vfds-bundle
Import data only"Restore from Export"
Import full backup"Restore Full Backup"
Transfer to new device"Transfer Vault" → full bundle, prompts for passphrase
§ 8

Privacy Notes

A machine-readable schema for automated validation is available at vfds-v1.0.schema.json.

§ 9

Conformance Rules

An application claims VFDS v1.0 conformance by satisfying all VODS v1.0 conformance rules (see VODS spec §6) and the following VFDS-specific rules. A machine-readable schema is available at vfds-v1.0.schema.json.

Producer conformance

An application producing VFDS exports MUST satisfy:

Consumer conformance

An application importing VFDS data MUST satisfy:

§ 10

Versioning

VFDS follows semantic versioning:

Change type
Version bump
Description
Patch
x.y.Z
Clarifications, corrected descriptions, no schema changes
Minor
x.Y.0
Additive field or enum additions, backward compatible
Major
X.0.0
Breaking changes to field names, types, or structure

Implementations MUST store the vfds_version on export and validate it on import. Unknown fields SHOULD be preserved, not discarded, to support forward compatibility.

§ 11

Totals (v1.0.0)

MetricCount
Model classes28
Enums28
Settings state class1
Cross-references10
Individual fields~160
Nested layers under root7
§ 12

Security Considerations

VFDS inherits the security considerations defined in VODS §8. The following are specific to financial data.

Threat model

VFDS documents contain highly sensitive financial information — account balances, debt details, net worth, insurance policies, trust instruments, and estate succession data. Adversaries include unauthorized household members, lost or stolen devices, compromised backup storage, malicious import files, and succession disputes. Implementations MUST treat all VFDS data as confidential by default.

Bundle encryption

The .vfds-bundle format uses AES-256-GCM with PBKDF2-SHA512 key derivation. Implementations SHOULD enforce a minimum passphrase strength (12+ characters or equivalent entropy). Passphrases MUST NOT be stored. The salt and nonce MUST be generated from a cryptographically secure random source.

Authorization enforcement

The role_permissions model defines access levels (none, read, write, admin) per member per layer. These are advisory in the export format — implementations MUST enforce them at the application layer. Exported data MUST NOT include layers the exporting user does not have read access to.

Input validation

Consumers importing VFDS data MUST validate bundle_manifest.json integrity before processing. Free-text fields (description, notes, body) MUST be sanitized before rendering. Implementations SHOULD enforce maximum document counts per bundle and reject bundles exceeding reasonable size limits.

Computed field prohibition

Convention C6 prohibits computed fields in exports. Implementations MUST NOT persist derived values (net worth, loss rates, progress percentages) in exported data — they MUST be recalculated on import.

§ 13

Glossary

Financial and trust terminology used in this specification. Implementers who are not financial professionals should reference this section when building VFDS-conforming applications.

TermDefinition
APRAnnual Percentage Rate. The yearly interest rate charged on a debt, not accounting for compounding. All interest_rate fields in VFDS use APR (C8).
Avalanche methodDebt payoff strategy that prioritizes the account with the highest interest rate first, minimizing total interest paid.
BeneficiaryA person or entity designated to receive benefits from a trust, insurance policy, or other financial arrangement.
Conversion ceremonyThe process of converting a revocable trust to irrevocable status. Freezes the trust terms and makes documents immutable (add-only).
Cost basisThe original purchase price of an asset, used to calculate capital gains or losses when the asset is sold.
CustodianA financial institution that holds and safeguards assets on behalf of the owner (e.g., a brokerage holding stocks).
Entity treeThe self-referential ownership hierarchy in vault.ownership_entities. Each entity may have a parent_id forming an N-ary tree (e.g., Trust → LLC → Brokerage).
Irrevocable trustA trust whose terms cannot be modified or revoked by the trustor after conversion. Assets placed in an irrevocable trust are generally removed from the trustor's taxable estate.
LayerOne of the seven data sections beneath the vault: flow, position, debt, wealth, protection, goals, milestones. Each layer covers a distinct aspect of the financial picture.
Net worthTotal assets minus total liabilities at a point in time. Tracked in position.net_worth_snapshots.
QuorumThe minimum number of authorized members (typically co-trustees) required to approve a trust lifecycle transition such as succession.
Revocable trustA trust that can be modified or dissolved by the trustor during their lifetime. The default starting state for living trusts in VFDS.
Snowball methodDebt payoff strategy that prioritizes the account with the smallest balance first, providing psychological momentum through quick wins.
SuccessionThe transfer of trust management from the current trustee(s) to designated successor trustees, typically triggered by incapacity or death.
TrusteeThe person or entity responsible for managing a trust's assets according to its terms. Has fiduciary duty to the beneficiaries.
TrustorThe person who creates and funds a trust. Also called a grantor or settlor in legal contexts.
VaultThe root container in VFDS. All financial data, members, documents, and the ownership tree belong to a single vault. A vault operates at one of three tiers: solo, household, or trust.
Vault tierThe operational mode of a vault. solo for single users, household for shared family finances, trust for full trust lifecycle management.
§ 14

Normative References

VFDS inherits all normative references from VODS §9. The following additional references apply.

ReferenceTitleRelevance
ISO 4217Currency CodesConvention C4 — all currency codes are 3-letter ISO 4217.
NIST SP 800-38DAES-GCMPer-file encryption in .vfds-bundle documents.
RFC 8018PKCS #5: Password-Based Cryptography (PBKDF2)Key derivation for bundle encryption passphrase.
PKZIP APPNOTEZIP File Format Specification.vfds-bundle is a ZIP archive.
§ 15

Changelog

VersionDateChanges
1.0.0 2026-03 Initial draft — vault hierarchy, seven financial layers (flow, position, debt, wealth, protection, goals, milestones), ownership entity tree, encrypted document bundles, trust lifecycle model.