Docs Reference Appendices

Appendices

Stable v0.1.0
Schema.md v2
Updated APR 2026

A. Migration Guides

Safe transitions. Dry-run first. Lock after clean.

Schemaless → Schemaful

onde schema extract > .onde/schema.md   # infer from existing files
# Edit. Remove junk types. Fix typos. Add @required/@default.
onde lint --soft                        # test law. warnings only.
# Fix data OR fix schema. Repeat until warnings drop.
onde lint                               # lock. errors block writes.
git add .onde/schema.md && git commit -m "Enforce schema"

v5 → v6 Directives

Old @id-prefix, @id-style, @id-pad deprecated. Replaced by id field + @default(...).

onde migrate --from 5 --to 6 --dry-run  # preview conversion
onde migrate --from 5 --to 6            # apply. rewrites schema.md
onde lint                               # verify. zero data loss.

Manual mapping if needed:

Old (v5)New (v6)
@id-prefix: taskid: string @id @default(counter(prefix: "task", pad: 3))
@id-style: kebabid: string @id @default(kebab)
@id-pad: 4id: string @id @default(counter(pad: 4))

Bulk Enum Shift

Schema changed A B CP0 P1 P2. Existing files now invalid.

# Option 1: Extend schema (backward compat)
# priority: enum(A B C P0 P1 P2) @default(P3)
# Option 2: Bulk replace in files
sed -i 's/priority:: A/priority:: P0/' tasks/*.md
sed -i 's/priority:: B/priority:: P1/' tasks/*.md
onde lint                               # validate. clean exit.
# Option 3: Soft transition
onde lint --soft                        # warnings only. fix gradually.

Workspace mixed ID/title/path links. Standardize to ID.

onde relink --audit                     # see distribution
onde relink --to id --dry-run           # preview changes
onde relink --to id                     # convert all. safe.
onde lint                               # verify resolution.

Rule: Convert before moving/renaming files. Path links break on move. ID links survive.


B. Performance & Scaling Tips

Workspace grows. Keep lint fast. Context clean.

ScenarioFix
Lint slows on 10k+ filesScope commands: onde lint tasks/. Use --continue-on-error.
Watch mode triggers too oftenAdd debounce. Scope to active dir. Don’t watch whole repo.
Token counting burns CPUBudgets trigger counting. Set only when needed. Use @soft during drafts.
ops.md grows largeAuto-compacts at threshold. Let it run. History archived. Zero data loss.
Edits fan out to many filesGroup changes. Lint once at end. Not after every save. Saves I/O.
head.bin feels staleDelete it. onde lint rebuilds from journal. Fast. Safe.
Query returns too muchUse --limit N, --format md-dense, --no-body. Trim context.
Schema validation noisy day oneStart --soft. Promote rules to hard gradually. Team adapts without friction.
Git merge slows downops.md merges by line append. Fast. MD conflicts cosmetic → onde lint heals.
Dashboard queries lagEmbedded queries cache results. Only re-run when deps change. Stack wisely.

Rule: Lint scales with dirty files, not total files. Keep commits small. Compact runs automatic. Cache rebuilds on demand.


C. Glossary

User-facing terms. One line each. Zero theory.

TermMeaning
TOONTyped Object Outline Notation. Dense pipe rows. ~15 tokens/node.
CRDTConflict-free merge. Concurrent edits combine deterministic. Zero conflicts.
HLCHybrid Logical Clock. Timestamps every fact. Orders events across agents.
JournalAppend-only log. Single source of truth. Never deleted.
MaterializeRebuild markdown from journal. Recover deleted files. Sync cache.
MirrorPlain text reference to node. Auto-syncs when source changes. Editable.
Head.binCurrent graph cache. Fast load. Derivable from journal.
Ops.mdActive journal file. Records every change. Git-mergeable.
SchemafulStrict mode. schema.md present. Types, edges, dirs, budgets enforced.
SchemalessFree mode. No schema.md. Syntax-only validation. Fast capture.
Temporal IndexFast history lookup. Query past states. Point-in-time traversal.
LintSync + validate + auto-fix + materialize. One command. Heartbeat.
CascadeOne edit triggers inverses, mirrors, queries. Batched. Written once.
Round-TripQuery output = valid input. md/md-dense re-ingest cleanly.
DistroPre-built template. Schema + dirs + SOUL.md. onde init -t <name>.
SOUL.mdAgent behavioral rules. Distro-specific workflow prompts. Lint reads, never enforces.
MarketplaceRegistry of distros. Browse, search, install. onde init --list.

D. Marketplace & Template Distros

Pre-built graph topologies. Download physics. Drop schema + dirs + rules. Start writing.

onde init -t <distro>              # create workspace from distro
onde init --list                   # browse all distros
onde init --search <query>         # search by name, category
onde init --local <path>           # load custom local distro
onde init -t <name> --dry-run      # preview. no writes.

All Distros

#NameCategoryCommandTopology
01BountyHunterSecurityonde init -t bountyhuntertarget > exploit > poc > bounty
02DevOpsWorkflowonde init -t devopsbug > blocks > PR > fixes > file
03DungeonMasterCreativeonde init -t dmpc > npc > quest > location > item
04HermesCodingonde init -t hermesattempt > fails > reason > tweaks > skill
05LexLegalonde init -t legalclaim > cites > precedent
06PalaceMemoryonde init -t mempalacewing > room > drawer
07StoryWeaverCreativeonde init -t storyweavercharacter > arc > location > chapter
08SysAdminWorkflowonde init -t sysadminserver > alert > metric > resolution
09Karpathy WikiMemoryonde init -t karpathy-wikiconcept > source > summary > comparison

Short aliases: dm = DungeonMaster, mempalace = Palace, legal = Lex.

What You Get

  • .onde/schema.md — node types, edges, dirs, budgets
  • SOUL.md — agent behavioral rules. Distro-specific workflow prompts.
  • Directory structure matching distro topology
  • 2-5 starter nodes per type
  • journal/ initialized. Empty. Ready.

After Init

  1. Read SOUL.md. Understand distro workflow.
  2. Write nodes. Lint enforces schema.
  3. Graph grows. Time-travel via journal.
  4. Zero lock-in. Delete schema.md → schemaless.

Custom Distros

# Build your own
mkdir my-distro && cd my-distro
# Write: distro.toml, schema.md, soul.md, nodes/

# Validate
onde init --local . --dry-run

# Use
onde init --local /path/to/my-distro/

Distro Upgrade

Distro evolves. Workspace independent. Schema not auto-updated.

onde distro check                 # compare workspace vs latest
onde distro diff                  # show what changed
onde distro upgrade --dry-run     # preview merge
onde distro upgrade               # merge new fields. preserve data.

Rule: Pick distro. Run onde init -t <name>. Read SOUL.md. Start writing. Lint syncs. Graph enforces.


End of Guide.
onde ready. Workspace yours. Journal eternal. Markdown disposable. Time queryable. Graph exact.
Edit → Lint → Query → Commit. Repeat.