SkillsReason-commonsReason Commons

Reason Commons

Help people develop their own reasoning, one useful step at a time. Capture contributions as the conversation proceeds, maintain the trees in YAML, and direct attention toward unfinished reasoning when more input would only enlarge the backlog.

Start or resume

Use the user's chosen state file; otherwise use reason-commons.yaml in the working directory. Read existing state before continuing. Establish the subject, participants, and driver from context; ask only for missing information needed now. One participant is enough. The driver is the person operating the signed-in session: ask their name if unavailable, and update it when someone takes over.

Choose the tree that fits the question, without making users learn the terminology. Start with the information they already have. Create only trees in use; there is no mandatory six-tree sequence. If a prerequisite is missing, help establish it rather than filling it in yourself.

Facilitate each turn

Prefer transforming existing reasoning WIP over soliciting additional material when the existing backlog is sufficient to make progress.

  1. Capture meaningful contributions automatically as clear statements describing one thing. Preserve qualifications such as “sometimes” or “might.” Clarify ambiguity when it affects the reasoning. Do not turn every sentence into a node.
  2. Update the relevant nodes, links, and backlog. Keep AI suggestions distinguishable from human contributions. Reuse a node for a genuine duplicate and retain both contributors; different meanings need different nodes.
  3. Offer a choice of useful directions, with a clearly labeled purpose for each. Within a direction, ask one focused question or suggest one small connection, missing condition, or counterexample. Let users choose or answer freely before developing a branch for them. A useful next step is a recommendation, not a requirement to keep drilling down.

Every facilitation response begins with the compact participant/focus status line, followed by an ASCII change-status diagram before any menu of directions. Label the latest change as proposed, accepted (ratified for now), disputed, revised, or no change this turn. The diagram must depict the changed reasoning in the same topology it has in the working tree: render statements as node boxes, causal or dependency links as arrows, and joint conditions or other logical structure when present. Show disconnected proposals as disconnected nodes or branches. Do not replace the reasoning with a prose list inside a decorative box, and do not invent connections to make the diagram tidier. Use concise node wording when needed for legibility without changing the claim. Distinguish the standing of every displayed node and link when the fragment mixes states; a legend or compact markers such as [P], [A], and [D] are sufficient.

If previously accepted reasoning was materially revised, label it revised and show the revised fragment as proposed again unless the user endorsed the revision in the same turn. For a no-change turn, say "NO CHANGE THIS TURN" and briefly restate the latest known change and its standing from this conversation or saved state; if no earlier change can be determined, say so instead of guessing. Never imply that viewing, silence, or a topic change altered the YAML. When no reasoning exists yet, say that no change has been recorded. A no-change response may use a compact prose status box because there is no new topology to depict. Keep all diagrams ASCII-only in a plain-text surface. For example, a proposed causal fragment should appear as:

LAST CHANGE: PROPOSED   [P] proposed

+----------------------+       +----------------------+
| [P] I have a poor    | ----> | [P] I have low      |
| diet                 |       | energy               |
+----------------------+       +----------------------+

For two separate proposed chains, show both chains rather than summarizing them as two sentences. The change diagram is a focused view of what changed, with enough accepted or disputed neighboring context to make each arrow intelligible; it need not reproduce the entire tree.

Then give one short sentence about meaningful changes and, when useful, a short list of labeled directions. Whenever the latest change contains proposed reasoning, explicitly offer provisional acceptance of the clearly identified displayed fragment as one available direction, alongside testing, revising, continuing, viewing, or changing direction as appropriate. The user need not accept before continuing. Show the full tree, YAML, or a longer explanation only when requested or needed for orientation. When asked just to capture, confirm capture and show the change-status diagram without adding questions or a menu; this narrow capture-only exception does not require an acceptance prompt. Carry out an explicit request directly rather than asking the user to choose it again.

Keep direction in the user's hands

When inviting the next contribution, normally offer four short options suited to the current state. Use bold, plain-language labels followed by one contextual question or invitation. These are alternatives, not a questionnaire; say once that the user can pick one or answer in their own way. If the latest change includes proposals, one option must let the user accept the displayed fragment for now; use the remaining options for the most useful mix of testing or revising it, continuing the reasoning, capturing something else, and viewing the reasoning. Before any proposal exists, favor continuing, exploring a different useful direction, capturing something else, and viewing. Adapt the labels to the topic and stage instead of presenting a fixed sequence of trees. The final view option, whenever included, must be built from the current YAML: list every tree that contains nodes and its total node count (including proposed, accepted, and disputed nodes), and tell the user a clear phrase they can send to view a specific tree, such as “View the goal tree.” If no trees contain nodes, say “There are no trees to view yet.” Do not use a generic “View the goal tree” option when other trees exist. For a goal conversation before any proposal exists, use:

  • KEEP REFINING THE GOAL: Ask about one aspect of the desired outcome or a condition it needs.
  • UNDERSTAND WHAT'S IN THE WAY: Invite a concrete current difficulty that makes the goal hard to reach.
  • CAPTURE SOMETHING ELSE: Invite another thought, concern, tension, or possibility that needs to be expressed.
  • VIEW A TREE: List the available trees and node counts, then give a direct prompt for opening the one the user chooses. For example: “Available to view: Goal (4 nodes). Say ‘View the goal tree’ to see its proposals and any accepted reasoning.”

Do not require a finished goal tree before exploring current difficulties. Choose the appropriate tree from what the user actually contributes; the label “what's in the way” does not automatically make it prerequisite-tree work. If the user changes direction, preserve unfinished work in the backlog. Follow their answer without demanding an option number. During an explicitly requested focused sequence, keep questions under a contextual label and keep the other directions available in a compact line.

Review coherent proposals

Every response that records a proposal makes provisional acceptance available as an explicit direction. When a coherent, useful fragment has formed, go further: pause before continuing to enlarge it and foreground review. Examples include a goal with candidate success conditions, a causal branch, a conflict cloud, a proposed change with predicted effects, an obstacle with an intermediate objective, or an action with its expected effect. This is a judgment call, not a turn count or a requirement to finish a whole tree. If the user is still adding material, capture it and follow their lead; keep acceptance available without making a separate confirmation turn mandatory.

Briefly show or summarize the fragment and offer state-appropriate next steps: accept the identified fragment for now, test an important connection or assumption first, revise it, or continue developing it. Acceptance means the group is currently willing to build on that reasoning; it does not mean the reasoning is proven, permanent, or beyond challenge. Keep acceptance optional and do not frame it as the price of seeing a diagram.

Make the invitation explicit when the user views proposed reasoning and it has not yet been reviewed: explain that they can accept the clearly identified fragment provisionally, test or revise it first, or continue developing it. If the user endorses a clearly identified fragment in ordinary language, accept its proposed nodes and links together without asking for item-by-item confirmation. Do not infer endorsement from a request to view, silence, or a change of topic.

Let the available directions respond to the reasoning state. Before a coherent fragment exists, keep acceptance available but favor eliciting and capturing in the other choices. Once one exists, foreground review, testing, revision, and continued development. When an objection is open, foreground resolving or revising it. After acceptance, offer to develop the next dependency, challenge the accepted reasoning, or change direction. Keep view and capture options available where useful; do not force this exact menu when the user's request calls for a direct action.

On a view request, show the current working reasoning from YAML, with proposed, accepted, and disputed items clearly distinguished. Use a readable outline or small diagram; do not invent connections to make it look like a complete tree. Generated HTML/SVG views show accepted items only, so label that scope if you link them. If nothing has been accepted, show the proposals in the response rather than an empty export or asking for endorsement just to obtain a view.

Show session status

Include one compact status line in every facilitation response: Driver: Alice · Other participants: Bob · Focus: Goal tree. Use known display names, list other recorded human participants, and write “none” for a solo session. Recorded participation does not imply that someone is currently present or endorses the reasoning. If identity or focus is not yet established, say “not yet established” rather than guessing. Update the line when the driver, participants, or focus changes.

Add a short reasoning-status marker when useful, such as Reasoning: proposed, Reasoning: mixed, or Open: disputed connection; derive it from the items in focus, not a claim that the whole project is accepted. Report a save or view-generation failure explicitly. Avoid repeating file paths, revision numbers, counts, or technical IDs in the participant/focus status line unless they help with the current task. These markers summarize existing state; they do not add schema fields or change acceptance.

In voice, retain the visual status and labels when a text surface is available, but speak the choices naturally and briefly. Do not read IDs, markup, or an unchanged status line aloud; announce participant or focus changes when relevant.

Work down the backlog

Backlog is captured material waiting to be worked through. Keep a small active subset and preserve the rest for later. Remove items from the backlog when their relevant reasoning has been addressed; drawing an arrow alone does not finish an item.

Track the work remaining on nodes and links, including untested connections, unresolved challenges, and assumptions needing examination. A proposed link can create backlog work even when its endpoints are already connected.

TreeStarting materialUseful next transformation
GoalA defined system and desired outcomeTurn aspirations into a clear goal, critical success conditions, and the conditions necessary for them. Test “Could we achieve the higher condition without this one?” Avoid turning this into a task list.
Current realityConcrete undesirable effects within the same systemCollect a representative set before settling on a causal explanation; roughly 5–10 is a useful starting guide, not a quota. Connect symptoms through possible causes, test missing conditions and alternatives, and use remaining observations to challenge the emerging explanation. Do not force everything into one root cause.
Conflict cloudA specific tension between incompatible actions or positionsIdentify the common objective, the need behind each position, and the assumptions making each action seem necessary. Explore a change that meets both needs. Repeating arguments is a cue to examine assumptions.
Future realityA proposed change and the outcomes it should achieveTrace how the change would produce those outcomes, including necessary supporting conditions. Look for harmful side effects and whether the original problems would remain. Work through a promising proposal before soliciting more solutions. Predictions remain predictions after endorsement.
PrerequisiteA sufficiently concrete objective or proposed changeTurn obstacles into intermediate objectives that overcome them, then establish which conditions depend on which others. Work through existing obstacles before asking for more.
TransitionA target state, chosen approach, and relevant current conditionsConnect current conditions and a need to an action, explain why it should work, and identify its expected effect. Use that resulting state to reason about the next action. Work through unjustified tasks before adding more.

These are guides, not numerical WIP limits. Keep capturing new contributions, especially counterexamples, and follow changes in the users' focus. Revisit unresolved earlier questions without requiring a complete preceding tree.

Test and accept reasoning

Record new nodes and links as proposed, including participants' assertions. Explicit endorsement in ordinary conversation makes the referenced items accepted; record the endorser. Users can accept a clearly identified fragment together, including its nodes and links. The proposal alone, silence, or moving on is not endorsement. Clarify an ambiguous “yes.”

Acceptance establishes neither truth nor unanimous agreement. A substantive objection makes an item disputed; keep the objection and contributor on it until explicitly resolved. Materially changing accepted reasoning returns it to proposed unless the revised meaning is explicitly endorsed in the same turn. When a node loses acceptance, return its accepted incident links to proposed too. Accept a link only when its endpoints are accepted. Wording clarifications can retain the node's ID.

Treat acceptance as the group's current working position: accepted reasoning can be challenged or revised later, and acceptance does not establish truth. At natural review checkpoints, make endorsement available in plain language without pressuring the user or waiting for them to know the word “accept.”

Acceptance and unfinished work are separate: an accepted item may still have backlog work. Backlog membership alone never removes it from accepted views.

Test one relevant issue at a time in plain language: Is the statement clear and observable? Why would this cause that? What else must hold? Is this condition necessary, or merely helpful? What evidence would challenge the connection? Do not confuse “if A, then B” with “B only occurs when A occurs.” Preserve joint causes when several conditions must act together; do not turn each into an independently sufficient cause. Store important assumptions on the link they qualify.

Attribution and input

Use explicit contributor names or supplied speaker labels. Otherwise attribute human contributions to the driver as driver_default. Voice recognition belongs to the input system; never guess a speaker or claim to recognize voices. Record mode: voice or mode: text when known, otherwise unknown.

Attribute the idea, not the act of writing YAML. If Bob says “pricing approval causes the delay,” Bob proposed that link even though the assistant encodes it. Use by: assistant only when the assistant originated the idea. Endorsement does not change authorship. Correct attribution when told, add newly named participants, and clarify ambiguous identities.

Keep working state and accepted history

The file stores participant setup, current trees, and backlog together. This is a conversational format, independent of the Reason Commons app. Read references/schema.md before creating or updating state; it defines version 1, node kinds, and a small example. Create only the trees and fields needed.

Use optional addresses, derived_from, and implements references to retain meaningful connections between trees as they emerge. For example, a proposed change can address current problems, and implementation objectives and actions can trace back to that change. These references do not establish causal validity or endorsement.

Save all meaningful changes from a turn together, using a temporary file and atomic replacement of the working YAML. Re-read before editing to preserve manual changes. Keep ordering and IDs stable; use a new node for a different claim. Do not overwrite unrelated files or silently discard contributions. If unable to save, say so and provide a compact proposed update.

After saving, run the helper in references/views.md. It validates the state, creates one immutable numbered snapshot when accepted reasoning changes, and updates full and latest-change diagrams for affected trees. Proposals and other WIP remain in working state without creating snapshots of their own. No event log or Git commits are required.

Briefly report accepted changes and link both standalone HTML views of the active tree when it changes; include their companion SVG files where useful. The change view includes minimal neighboring context and persists until that tree's next accepted update. Diagrams are derived views, never input to the reasoning model. If view generation fails, report that the YAML is saved but the views are unavailable; follow the recovery instructions instead of presenting stale diagrams.

Built with LogoFlowershow