| Project | Nondominium — ValueFlows-compliant Resource Sharing Holochain Application |
| Organization | Sensorica Open Value Network |
| Authors | Sacha Pignot (Soushi888), Tibi |
| Status | Draft — For Community Review |
| Version | 1.0 (2025-12-28) |
| Repository | github.com/sensorica/nondominium |
Technical Specifications: See ValueFlows DSL Technical Specifications for implementation details, syntax specifications, and technical architecture.
- Executive Summary
- Background and Context
- Goals and Objectives
- Target Users
- Use Cases
- Functional Requirements
- Non-Functional Requirements
- Technical Constraints
- Proposed Syntax Examples
- Implementation Roadmap
- Success Criteria
- Open Questions
- References
This document specifies the requirements for a Domain-Specific Language (DSL) designed to express ValueFlows economic patterns within the Nondominium ecosystem. The DSL aims to provide power users, network administrators, and developers with a concise, human-readable scripting language for bootstrapping networks, bulk resource registration, process recipe definition, and automated economic coordination.
Nondominium is a ValueFlows-compliant Holochain application implementing distributed, agent-centric resource management with embedded governance. While a graphical user interface serves daily operations, complex administrative tasks—such as initializing a new commons network with dozens of resources, members, and governance rules—benefit significantly from a scriptable approach.
The proposed DSL bridges the gap between the formal ValueFlows ontology and practical operational needs, enabling reproducible configurations, version-controlled economic definitions, and automated workflows that would be tedious or error-prone through manual GUI interaction.
ValueFlows is an open vocabulary for distributed economic networks, built upon the Resource-Event-Agent (REA) accounting ontology. It provides a standardized way to describe economic activity across organizational boundaries, enabling coordination between agents who may use different software systems.
Core ValueFlows concepts include:
- Agents — Persons, organizations, or ecological agents that perform economic activities
- Resources — Economic resources tracked by specification (type) and optionally as inventoried instances
- Events — Observed economic activities: produce, consume, use, transfer, modify, move, etc.
- Processes — Transformations that take resource inputs and produce outputs
- Commitments — Promised future economic events
- Intents — Desired economic events not yet committed (offers and requests)
- Recipes — Templates defining how processes transform inputs to outputs
Nondominium implements ValueFlows on Holochain through a three-zome architecture:
- zome_person — Agent identity, profiles, roles, and capability-based access control
- zome_resource — Resource specifications, economic resources, and lifecycle management
- zome_gouvernance — State transition operator that evaluates governance rules and validates changes
This governance-as-operator design separates data management from business logic enforcement, allowing governance rules to be modified without changing resource data structures. The DSL must respect this separation while providing a unified scripting experience.
Current limitations that the DSL addresses:
- Manual repetition — Registering many resources or agents requires repetitive GUI interactions
- No reproducibility — Network configurations cannot be version-controlled or replicated
- Steep learning curve — Understanding ValueFlows requires navigating verbose JSON-LD or GraphQL structures
- No automation — Recurring administrative tasks cannot be scripted
- Testing complexity — Creating realistic test environments requires manual setup
- Accessibility — Lower the barrier to working with ValueFlows patterns through readable, intuitive syntax
- Efficiency — Enable bulk operations that would be impractical through GUI interaction
- Reproducibility — Allow network configurations to be version-controlled, shared, and replicated
- Correctness — Provide compile-time validation of economic logic before execution
- Integration — Seamlessly compile to Nondominium's hREA zome calls
- Contribution to ValueFlows ecosystem — Design the DSL to potentially benefit other ValueFlows implementations
- Educational value — Help users understand ValueFlows concepts through practical usage
- Extensibility — Support future additions to the ValueFlows vocabulary and Nondominium features
Network Administrators — Individuals responsible for setting up and maintaining Nondominium networks for their organizations or communities. They need to:
- Bootstrap new networks with initial agents, resources, and governance rules
- Migrate existing data from legacy systems
- Perform bulk updates across many resources
- Define and update governance rules systematically
Developers — Technical contributors building on or extending Nondominium. They need to:
- Create reproducible test environments
- Script integration tests with realistic data
- Generate demonstration scenarios
- Debug issues by examining DSL-generated state
Power Users — Technically inclined community members who prefer scripting over GUI interaction for:
- Batch resource registration (e.g., cataloging an entire workshop)
- Defining complex process recipes
- Automating recurring administrative tasks
Other ValueFlows Implementers — Projects building ValueFlows-based systems who may adopt or adapt the DSL for their own use cases.
Scenario: A new fabrication commons wants to launch their Nondominium network with initial configuration.
Requirements:
- Define the organization and founding members
- Register resource specifications (equipment types, material categories)
- Create initial inventory of resources
- Establish governance rules for resource access and transfer
- Set up standard process recipes for common workflows
Scenario: An existing workshop joins the network and needs to register all their equipment.
Requirements:
- Import from CSV or structured data sources
- Apply common properties to groups of resources
- Generate unique identifiers systematically
- Validate data consistency before committing
Scenario: The network documents standard manufacturing processes for replication and planning.
Requirements:
- Define input resources (consumed, used, cited)
- Define output resources (produced)
- Specify work requirements by skill type
- Indicate process stages and dependencies
- Support recipe scaling (multiplying quantities)
Scenario: Administrators define access policies, booking limits, and approval workflows.
Requirements:
- Define rules that apply to resource categories
- Specify conditions, thresholds, and approvers
- Update rules without affecting resource data
- Validate rule consistency and coverage
Scenario: Data moves between systems or needs backup/restore capability.
Requirements:
- Export current network state as DSL scripts
- Diff two states to generate migration scripts
- Import from other ValueFlows implementations
- Generate JSON-LD or GraphQL representations
The DSL must support the following ValueFlows concepts as first-class language constructs:
- Person agents with profile information
- Organization agents (formal and informal)
- Role assignments within organizations
- Agent relationships (member-of, works-for, etc.)
- Resource specifications (types/kinds)
- Economic resources (inventoried instances)
- Resource classifications (taxonomies)
- Units of measure
- Lot and serial number tracking
- Intents (offers and requests)
- Commitments (promises)
- Economic events (observations)
- Claims (reciprocal expectations)
All standard ValueFlows actions must be supported:
- Process actions: produce, consume, use, cite, work, deliverService, modify
- Transfer actions: transfer, transferAllRights, transferCustody
- Movement actions: move, pickup, dropoff
- Combination actions: combine, separate
- Adjustment actions: raise, lower, copy
- Process specifications (types)
- Process instances
- Recipe definitions with input/output flows
- Stage tracking for multi-step workflows
- Access rules for resource types
- Approval workflows
- Booking and usage limits
- Private Participation Receipts (PPR) configuration
- Create new entities
- Read/query existing entities
- Update entity properties
- Delete/archive entities
- Create multiple entities from templates
- Update entities matching criteria
- Import from external data sources
- Export to various formats
The DSL must provide comprehensive validation across multiple dimensions:
- Syntax validation — Grammar compliance and structure checking
- Type checking — Unit compatibility, resource specification matching
- Reference integrity — Agent and resource existence verification
- Economic logic — Process balance, valid action sequences
- Governance compliance — Rule coverage, conflict detection
See technical specifications for detailed validation pipeline architecture.
| Command | Description |
|---|---|
nondom apply <script.vf> |
Execute a DSL script against the network |
nondom validate <script.vf> |
Validate syntax and semantics without executing |
nondom apply --dry-run <script.vf> |
Show what would change without applying |
nondom export --format vf |
Export current state as DSL script |
nondom import <file> --mapping <map.vf> |
Import from external format using mapping |
nondom repl |
Interactive shell for exploratory scripting |
- Syntax should be readable by non-programmers familiar with ValueFlows concepts
- Error messages must reference source locations and suggest corrections
- Documentation with examples for all major use cases
- Syntax highlighting support for common editors (VS Code, Vim, Emacs)
Target Performance Metrics:
| Operation | Target | Notes |
|---|---|---|
| Parse 1000 entities | < 1 second | Script size |
| Validate typical script | < 2 seconds | All validation phases |
| Create 100 resources | < 10 seconds | Excluding DHT latency |
| Export 1000 entities | < 5 seconds | To DSL format |
| Bulk update 100 resources | < 5 seconds | With where clause |
Scalability:
- Support scripts with 1000+ entity definitions
- Memory usage < 100MB for typical operations
- Batch operations optimize Holochain network calls
See technical specifications for detailed optimization strategies.
- Atomic execution — All-or-nothing application of changes
- Idempotent operations — Repeated executions produce consistent results
- Clear rollback semantics — Graceful failure recovery
- No data corruption — Crash-safe operations
- Support for custom attributes beyond core ValueFlows
- Plugin architecture for additional compilation targets
- Versioned language specification for backward compatibility
The DSL must provide:
- Agent authentication — Scripts execute with authenticated agent's permissions
- Capability-based access control — All operations validated against capability tokens
- Data privacy — Sensitive data handling respects Nondominium's privacy model
- Audit logging — Comprehensive logging of all operations
- Declarative-only execution — No arbitrary code execution or system access
- Rate limiting — Abuse prevention for bulk operations
See technical specifications for detailed security model.
- Implementation language: Rust (to align with Nondominium's existing codebase)
- Parser: pest or nom parser combinators
- Primary target: Nondominium hREA zome calls
- Secondary targets: JSON-LD export, GraphQL mutations, visualization
- DSL concepts must map cleanly to ValueFlows vocabulary
- Terminology should align with ValueFlows documentation
- Export to standard ValueFlows JSON-LD must be lossless
- Respect Holochain's agent-centric security model
- Work within DHT consistency constraints
- Support capability-based access control
The following examples illustrate the proposed DSL syntax. Final syntax will be refined during implementation.
# Network initialization script
network FabLabMontreal {
created: 2025-01-15
jurisdiction: Quebec
}
agents {
organization Sensorica {
type: OpenValueNetwork
location: Montreal
}
person Alice { roles: [Founder, Steward] }
person Bob { roles: [Technician, Member] }
}
resource_specifications {
Equipment {
governance: commons_stewardship
accounting: use_tracking
}
Material {
governance: pool_contribution
accounting: quantity_consumed
}
}
resources {
CNC_Router : Equipment {
custodian: Sensorica
location: "Main workshop"
value_estimate: 15000 CAD
}
PLA_Filament : Material {
quantity: 50 kg
pool: shared_consumables
}
}
recipe MachinePart {
inputs:
Aluminum_Stock 0.5kg (consume)
CNC_Machine 2h (use)
work:
Fabrication 2h
outputs:
Machined_Part 1 (produce)
}
governance {
rule EquipmentBooking {
applies_to: Equipment
max_advance_booking: 14 days
requires_approval_above: 8h
approvers: [Steward, Technician]
}
}
# Recording actual events
event production_001 {
action: produce
provider: Alice
output: Machined_Part
quantity: 10
at: 2025-01-20T14:30:00
}
# Fulfilling a commitment
fulfill order_123 {
performed_by: Bob
resource: Machined_Part
quantity: 10
to: Customer
}
# Register multiple similar resources
resources {
3D_Printer_Fleet : Equipment * 5 {
custodian: Sensorica
model: "Prusa MK4"
location: "Print farm"
# Creates: 3D_Printer_Fleet_1 through 3D_Printer_Fleet_5
}
}
# Update matching resources
update resources where type == Equipment {
maintenance_schedule: monthly
}
See technical specifications for additional syntax examples and edge cases.
Duration: 4-6 weeks
- Parser implementation for core constructs
- Agent and resource registration
- Basic validation (syntax, types)
- CLI with apply and validate commands
- Compilation to Nondominium zome calls
Deliverables: Working DSL for basic agent and resource definitions
Duration: 4-6 weeks
- Full ValueFlows action support
- Process and recipe definitions
- Governance rule configuration
- Import/export functionality
- Dry-run and diff capabilities
Deliverables: Complete DSL covering all major use cases
Duration: 3-4 weeks
- Language server protocol (LSP) implementation
- VS Code extension
- REPL for interactive exploration
- Documentation and tutorial content
Deliverables: Developer-friendly tooling ecosystem
Duration: Ongoing
- Additional compilation targets (GraphQL, visualization)
- Community feedback integration
- Coordination with ValueFlows community
- Template library for common patterns
Deliverables: Sustainable community-driven development
| Criterion | Measurable Target | Verification Method |
|---|---|---|
| Network Bootstrapping | Bootstrap 100-agent network in < 5 minutes | Time full bootstrap script execution |
| Bulk Registration | Register 100 resources in < 10 seconds | Benchmark bulk resource creation |
| Script Reviewability | Comprehend 200-line script in < 5 minutes | User testing with experienced administrators |
| Error Resolution | Fix common errors in < 2 minutes using error messages | Measure time-to-fix for typical errors |
| External Adoption | 2+ organizations using DSL in production by Q2 2026 | Track adoption through GitHub issues and community |
| Community Feedback | 80%+ positive sentiment on ValueFlows design alignment | Survey ValueFlows community members |
| Parse Performance | Parse 1000-entity script in < 1 second | Automated performance benchmarking |
| Validation Accuracy | < 1% false positive rate in validation errors | Test suite with valid and invalid scripts |
| Documentation Coverage | 100% of language constructs documented | Automated documentation completeness check |
| Test Coverage | > 90% code coverage for DSL compiler | Automated test coverage reporting |
Network Administrators:
- Can create bootstrap script without programming background
- Successfully complete initial network setup in < 30 minutes
- Understand error messages and fix issues independently
- Export/import network state for backup purposes
- Define governance rules using DSL syntax
Developers:
- Create reproducible test environments with < 50 line scripts
- Generate 100+ test resources in < 30 seconds
- Debug issues using DSL-generated state exports
- Integrate DSL into CI/CD pipelines
- Extend DSL with custom attributes when needed
Power Users:
- Register equipment inventory using bulk operations
- Define complex process recipes for manufacturing
- Automate recurring administrative tasks
- Share scripts with community for reuse
- Contribute governance rule templates
Correctness:
- All ValueFlows actions supported and tested
- Economic logic validation prevents invalid states
- Governance rules enforce correctly
- Round-trip export/import preserves data 100%
Performance:
- Parse 1000 entities in < 1 second
- Validate typical script in < 2 seconds
- Execute 100-entity script in < 30 seconds (excluding DHT)
- Memory usage < 100MB for typical operations
Reliability:
- Atomic transactions succeed or roll back completely
- Idempotent operations produce consistent results
- Error recovery gracefully handles failures
- No data corruption in crash scenarios
Usability:
- Error messages include line numbers and suggestions
- Syntax highlighting available for VS Code, Vim, Emacs
- Tutorial covers all common use cases
- Example scripts for all major patterns
- CLI help provides clear usage guidance
ValueFlows Alignment:
- Terminology matches ValueFlows specification
- Export to JSON-LD is lossless
- Community review validates design approach
- Contribution guidelines for upstream inclusion
Nondominium Integration:
- Compiles to correct hREA zome calls
- Respects capability-based access control
- Works with existing GUI-created data
- Governance rules integrate with zome_gouvernance
| Question | Status | Resolution / Considerations |
|---|---|---|
| File extension | ⏳ Open | Options: .vf (recommended), .nondom, .valueflows — Community feedback requested |
| Scripting capabilities | ✅ RESOLVED | Three-tier progressive model (see technical specs) — MVP is declarative, T2 adds templates, T3 adds scripting |
| Temporal expressions | ⏳ Open | Consider ISO 8601 durations, cron-like schedules, natural language — Needs UX research |
| Module system | ⏳ Open | include directive shown in examples, but dependency resolution TBD — Circular dependency prevention needed |
| Governance scope | ✅ RESOLVED | Tightly integrated (see technical specs Section 3) — Full DSL syntax for governance rules with testing |
Resolved: Scripting Capabilities (2025-01-15)
- Decision: Three-tier progressive language model
- Rationale: Allows MVP to remain simple while providing upgrade path
- Impact: Most users only need Tier 1; Tier 3 can be added based on demand
- Reference: Technical Specifications, Section 1.1
Resolved: Governance Scope (2025-01-15)
- Decision: Governance rules are first-class DSL constructs
- Rationale: Enables version-controlled, testable governance policies
- Impact: Unified scripting experience for data and rules
- Reference: Technical Specifications, Section 3
File Extension:
- Proposed:
.vf(short, memorable, indicates ValueFlows) - Alternatives:
.nondom(project-specific),.valueflows(explicit but long) - Decision Target: Q1 2026, after MVP prototype testing
Temporal Expressions:
- Use Cases: Booking durations, maintenance schedules, temporal governance rules
- Options:
- ISO 8601:
P1H(1 hour),P30M(30 minutes) - Natural:
1h,30min,2days - Cron:
0 9 * * 1-5(9am weekdays)
- ISO 8601:
- Research Needed: User testing for readability and ease of use
Module System Design:
- Requirements:
- Import scripts by path
- Circular dependency detection
- Namespace isolation
- Re-exports for library scripts
- Open Issues: How to handle version mismatches between imported scripts?
- ValueFlows Specification: https://www.valueflo.ws/
- Nondominium Repository: https://github.com/sensorica/nondominium
- hREA Project: https://github.com/h-REA/hREA
- REA Ontology: https://wiki.p2pfoundation.net/Resource-Event-Agent_Model
- Holochain Documentation: https://developer.holochain.org/
- Technical Specifications: ValueFlows DSL Technical Specifications
| Action | Effect on Resource | Typical Use |
|---|---|---|
produce |
Increments quantity | Manufacturing output |
consume |
Decrements quantity | Raw material input |
use |
No quantity change | Equipment usage |
cite |
No quantity change | Reference designs/docs |
work |
N/A (effort) | Labor contribution |
deliverService |
N/A (service) | Service delivery |
modify |
Changes properties | Repair, upgrade |
transfer |
Changes custody + rights | Full ownership transfer |
transferAllRights |
Changes rights only | Sell without delivery |
transferCustody |
Changes custody only | Lend, consign |
move |
Changes location | Transportation |
pickup |
Start custody transfer | Receive shipment |
dropoff |
Complete custody transfer | Deliver shipment |
combine |
Creates container | Packaging, kitting |
separate |
Splits container | Unpacking |
raise |
Increments (adjustment) | Inventory correction up |
lower |
Decrements (adjustment) | Inventory correction down |
copy |
Creates duplicate | Digital resources |
| Term | Definition |
|---|---|
| Agent | A person, organization, or ecological entity that can participate in economic activity |
| Commitment | A promise to perform an economic event in the future |
| DHT | Distributed Hash Table — Holochain's data storage mechanism |
| Economic Event | An observed change in resources or resource rights |
| Economic Resource | Something of value that can be tracked and accounted for |
| hREA | Holochain implementation of the REA accounting model |
| Intent | A desired economic event that has not yet been committed to |
| PPR | Private Participation Receipt — Nondominium's reputation tracking mechanism |
| Process | A transformation that takes inputs and produces outputs |
| Recipe | A template defining a repeatable process |
| REA | Resource-Event-Agent — An accounting ontology |
| Resource Specification | A type or kind of resource (not an instance) |
| ValueFlows | A vocabulary for distributed economic coordination |
| Zome | A module in a Holochain application |