[lake]
# Markdown entry lake path, resolved relative to this config file.
path = "sirno-docs"
# Paths in lake that Sirno skips while reading, checking, querying, and rendering footers.
ignore = [".obsidian"]

[frost]
# Sirno Frost path, kept outside the public lake.
path = "sirno-frost"

[repo]
# Repository files, directories, or globs scanned for witness blocks.
members = ["src", "README.md"]

[witness]
# Witness delimiter regex pairs; each first capture group is the entry id.
# Canonical filename entry-id capture: ([^\x00-\x1F\x7F<>:"/\\|?*.,\r\n]+)
[[witness.delimiters]]
begin = '(?m)^[ \t]*//[ \t]*sirno:witness:([^\x00-\x1F\x7F<>:"/\\|?*.,\r\n]+):begin'
end = '(?m)^[ \t]*//[ \t]*sirno:witness:([^\x00-\x1F\x7F<>:"/\\|?*.,\r\n]+):end'

[[witness.delimiters]]
begin = '(?m)^[ \t]*<!--[ \t]*sirno:witness:([^\x00-\x1F\x7F<>:"/\\|?*.,\r\n]+):begin[ \t]*-->'
end = '(?m)^[ \t]*<!--[ \t]*sirno:witness:([^\x00-\x1F\x7F<>:"/\\|?*.,\r\n]+):end[ \t]*-->'

[check]
# Require generated footers to match current metadata during checks.
render = true

[tutorial]
# Presence of this table enables tutorial text for recoverable command failures.
# Remove this table to keep CLI errors terse.
# Show tutorial text when frost commit is blocked by open tide workitems.
frost_commit_tide = true
# Include first-snapshot bootstrap context in the frost commit tide tutorial.
frost_bootstrap_tide = true

[structural]
# Structural metadata fields.
# Add one [structural.FIELD] subtable for each metadata field Sirno treats as structure.
# FIELD must name the lake entry that documents the field and follow normal entry-id rules.
# FIELD must be a non-empty single-line metadata key with no comma.
# FIELD cannot be name, desc, or frozen.
# Entry metadata values for FIELD must be lists of entry ids; targets must exist by review.
# `to` follows outgoing targets, `from` incoming sources, and `clique` shared-target neighbors.
# render = true writes generated footer links.
# ripple.lake and ripple.frost add tide workitems from the waterline and frostline.
# Omitted render and ripple values are false.

[structural.category]

[structural.belongs]
to = { render = true, ripple = { lake = true } }
from = { render = true, ripple = { lake = true, frost = true } }
clique = { ripple = { lake = true } }

[structural.refines]
to = { ripple = { lake = true } }
from = { ripple = { lake = true, frost = true } }
