Skip to content

feat: typed page kinds — schema sync for person, decision, system #234

@plind-junior

Description

@plind-junior

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions