What you're trying to do
gbrain's docs/schema-author-tutorial.md walks through forking a bundled pack and adding a custom typed page kind. Vouch's PageType enum is closed (reference, decision, entity, session); contributors can't add a meeting-notes or proposal kind without forking the model. A small change with outsized leverage: let the KB declare additional page kinds in config.yaml, validated by per-kind frontmatter schemas.
Suggested shape
# .vouch/config.yaml
page_kinds:
meeting-notes:
frontmatter_schema: "{type: object, properties: {attendees: {type: array}}}"
required_citations: false
decision-record:
extends: decision
required_fields: [date, owner]
vouch schema sync --apply backfills existing pages against the new kind definitions; surfaces conflicts as proposed/.
kb.propose_page validates frontmatter against the declared kind's schema.
Acceptance
- Declaring
meeting-notes lets vouch propose-page --kind meeting-notes accept that value.
- A page missing a required field fails with a per-field error.
- The bundled
entity / decision / reference / session kinds keep working unchanged.
Out of scope
- Cross-kind page inheritance beyond one level.
- LLM-mediated schema inference.
What you're trying to do
gbrain's
docs/schema-author-tutorial.mdwalks through forking a bundled pack and adding a custom typed page kind. Vouch'sPageTypeenum is closed (reference,decision,entity,session); contributors can't add ameeting-notesorproposalkind without forking the model. A small change with outsized leverage: let the KB declare additional page kinds inconfig.yaml, validated by per-kind frontmatter schemas.Suggested shape
vouch schema sync --applybackfills existing pages against the new kind definitions; surfaces conflicts asproposed/.kb.propose_pagevalidates frontmatter against the declared kind's schema.Acceptance
meeting-notesletsvouch propose-page --kind meeting-notesaccept that value.entity/decision/reference/sessionkinds keep working unchanged.Out of scope