Skip to main content
Glama

Record a decision

vivac_decide

Record a settled decision with its reason and rejected alternatives so choices and their rationale are captured in the provenance tree.

Instructions

Record a settled choice (yours or the person's), its reason and every rejected alternative now. Alternatives are semantically required even though optional in the schema. Norms: use vivac_add constraint (root if global), even if called rules. Use against for each applicable pillar/rule plus its compliance sentence; silent judgement is not a declaration.

Input Schema

NameRequiredDescriptionDefault
refNoPaths or identifiers this node concerns.
rootNoCreate at root instead of under focus; conflicts with parent.
titleYesThe decision, in a few words.
blocksNoParent cannot close until this node closes.
parentNoParent node ID/alias; defaults to focus, else root. Conflicts with root.
reasonYesWhy this choice or deferral, not just its result.
againstNoDecision only: one pillar/rule plus compliance sentence per item, e.g. "r12: writes stay local". Not constraints.
governsNoFile globs governed by this work or norm.
supersedesNoAn earlier decision, constraint, rule or pillar this one retires, while it is still in force.
alternativeNoEvery rejected option, one per item.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv0.22.1
    • changedInput schema / properties / against / description
      Previous value: -"A pillar or rule this was judged against and a sentence on how it holds, as one entry: \"r12: the write path stays local\". Repeat for each one. vivac checks that the pillar or rule exists and still governs; the sentence is not judged."New value: +"Decision only: one pillar/rule plus compliance sentence per item, e.g. \"r12: writes stay local\". Not constraints."
    • changedInput schema / properties / alternative / description
      Previous value: -"An option that was ruled out. Repeat for each one."New value: +"Every rejected option, one per item."
    • changedInput schema / properties / blocks / description
      Previous value: -"Its parent cannot close while this one is still open."New value: +"Parent cannot close until this node closes."
    • changedInput schema / properties / governs / description
      Previous value: -"Globs of files this decision's work is expected to touch."New value: +"File globs governed by this work or norm."
    • changedInput schema / properties / parent / description
      Previous value: -"The node it hangs from. Defaults to the current focus, or the root if there is none."New value: +"Parent node ID/alias; defaults to focus, else root. Conflicts with root."
    • changedInput schema / properties / reason / description
      Previous value: -"Why this and not something else. A decision with no reason is a datum, not a decision."New value: +"Why this choice or deferral, not just its result."
    • changedInput schema / properties / ref / description
      Previous value: -"Paths or identifiers this decision is about."New value: +"Paths or identifiers this node concerns."
    • changedInput schema / properties / root / description
      Previous value: -"Born at the root, with no parent, instead of under the focus. Refused together with parent."New value: +"Create at root instead of under focus; conflicts with parent."
  2. Changed1 schema field changedv0.18.0
    • changedInput schema / properties / supersedes / description
      Previous value: -"An earlier decision this one retires."New value: +"An earlier decision, constraint, rule or pillar this one retires, while it is still in force."
  3. First observedv0.17.1

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a non-read-only, non-destructive, non-idempotent write, so the safety profile is already covered. The description adds genuinely new behavioral context by warning that rejected alternatives are 'semantically required even though optional in the schema,' which an agent would not learn from the annotations or schema alone. It still does not say what superseding does to the prior record or what the call returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence front-loads the core action well, but the following sentences are dense and shorthand-heavy ('Norms: use vivac_add constraint (root if global), even if called rules'), which costs clarity. Every sentence is relevant, yet the phrasing reads as internal jargon rather than clean instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a ten-parameter write tool with no output schema, the description covers the most error-prone parameter ('alternative') and the 'against' convention, which is the right prioritization. It is silent on what the tool returns (node ID or confirmation) and on the semantics of 'supersedes' and 'governs', so an agent driving follow-up calls has gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds real meaning by upgrading 'alternative' from optional to semantically mandatory and by prescribing the 'against' format ('pillar/rule plus compliance sentence'). It leaves 'governs', 'blocks', and 'supersedes' entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb and resource: 'Record a settled choice ... its reason and every rejected alternative.' It is distinguishable from a general note-taking tool because it demands a reason and rejected options, but it never names the closest siblings (vivac_declare, vivac_note) to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It does route one case explicitly: constraints/norms should go to vivac_add rather than here, and 'against' should be filled per applicable pillar/rule. That is meaningful steering, but there is no guidance on when to choose this over vivac_declare or vivac_note, and the word 'now' hints at timing without explaining it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.