The vocabulary, and nothing else

Every value a candidate file may use for tree, role, kind and an assessment kind. Nothing here is a suggestion or an abbreviation. A value not in these tables is either refused by the file contract or accepted by it and then refused by everything downstream, and the second is worse than the first.

Do not take these names from LTP_RATIFICATION_AND_IMPORT_SPEC.md. ยง19.2 of that document lists the views as goal | problem | conflict | solution | implementation | transition. Those are the names the interface uses (FieldKey in src/domain/fields.ts). The names a file uses are the ones below, and problem, solution and implementation are not among them.

This file is checked against the code. tests/unit/skill-vocabulary.test.ts reads the tables here and asserts they equal TreeTypeSchema, NODE_ROLES, treesForRole, RELATIONS and LtpAssessmentSchema. It parses the first column of every table row, and the second column of the roles table as a comma-separated list. Keep that shape. If the test fails, the code moved and this file is now wrong โ€” fix this file, not the test.

The six views

The tree of every entity, relationship and assessment.

viewthe app calls itwhat it argues
goalgoalwhat worthwhile success requires
current_realityproblemthe unwanted reality that exists now, and what causes it
conflictconflictneeds that appear to pull in opposite directions
future_realitysolutiona change, and the future it produces
prerequisiteimplementwhat stands in the way, and the conditions for getting past it
transitiontaskwhat someone actually does, in sequence

The roles

The role of every designation. A designation has no tree of its own โ€” it inherits the view of the proposition it names, so a role has to belong to that view. The file contract does not check this. roleBelongsInTree does, later, and bun run check:import reports it as advice.

observation and evidence belong to all six views. observation is the honest answer when a sentence states something about the system and the document never says what the statement is for; reach for it rather than guessing at a role that claims more.

roleviewswhat the sentence has to be doing
goalgoalnaming the outcome the whole argument is for
critical_success_factorgoalnaming something without which the goal cannot hold
necessary_conditiongoalnaming something a success factor itself requires
undesirable_effectcurrent_reality, future_realitynaming something happening that nobody wants
intermediate_causecurrent_realitynaming a cause that is itself caused by something else
root_causecurrent_realitynaming a cause the document does not explain further
critical_root_causecurrent_realitynaming the one root cause the document argues explains the rest
cloud_objectiveconflictnaming what both sides of the dilemma are for
cloud_requirementconflictnaming a need the objective depends on
cloud_prerequisiteconflictnaming the action a requirement is thought to demand
injectionconflict, future_realitynaming a change that breaks the dilemma or produces the future
desired_effectfuture_realitynaming what becomes true once the change is made
implementation_objectiveprerequisitenaming what has to be achieved for the change to be real
obstacleprerequisitenaming what currently stops that objective
intermediate_objectiveprerequisitenaming what gets past a specific obstacle
transition_existing_realitytransitionnaming the situation a step starts from
transition_needtransitionnaming why that situation has to change
transition_actiontransitionnaming what someone does
transition_expected_effecttransitionnaming what the action is expected to produce
observationgoal, current_reality, conflict, future_reality, prerequisite, transitionstating something about the system whose purpose the document never gives
evidencegoal, current_reality, conflict, future_reality, prerequisite, transitionreporting a measurement or a source that bears on another claim

Two roles the file contract accepts and no view holds: vision and higher_level_objective. They pass LtpDocumentSchema, and nothing downstream takes them. Never write them. If a sentence reaches past the goal, it is a goal in its own right or it is outside the document's system and belongs in the report's omissions.

The eight names in LEGACY_DESIGNATION_ROLES (src/domain/graph.ts) โ€” intermediate_effect, objective, requirement, prerequisite, desirable_effect, action, expected_effect, assumption โ€” exist for rows written by an earlier version. The import uses the strict enum and refuses them.

Relationship kinds

The kind of every relationship. Both ends and the relationship's own tree must be the same view, so no kind here can be used across two views, including the ones CROSS_TREE_RELATIONS documents as legitimately cross-tree.

kindwhen the source supports it
necessary_forthe source says the target cannot hold without the source
causesthe source asserts the link plainly: "because", "therefore", "driven by"
contributes_tothe source says the link is partial: "one factor", "partly explains"
conflicts_withthe source says the two cannot both be satisfied
requiresthe source says one thing demands another to proceed
satisfiesthe source says one thing meets a need another stated
overcomesthe source says one thing removes an obstacle
precedesthe source puts one action before another in sequence
producesthe source says an action yields a specific result
invalidates_assumptionthe source says a change breaks a belief the reasoning rested on
implementsthe source says one thing carries out another
supersedesthe source says one claim replaces another
supportsthe source offers something as backing for a claim
challengesthe source offers something as counting against a claim
refinesthe source restates a claim more precisely
enablesthe source says one thing makes another possible without making it happen

so_that, blocks, contradicts and evidences are LEGACY_RELATIONS. The import refuses them.

Assessment kinds

The kind of every assessment. Write one only where the document itself draws the conclusion. A conversion that assesses on the author's behalf is inventing the part of the reasoning a team is supposed to do.

kindwhat it concludes
critical_root_causethat one root cause explains the effects the argument cares about
breaks_conflictthat an injection resolves the dilemma without giving up either need
validated_solution_branchthat a branch of the future reality holds up
solution_sufficientthat the change is enough to reach the goal
negative_branch_mitigatedthat an unwanted effect of the change has been dealt with
implementation_readythat the obstacles have objectives against them
transition_completethat the steps cover the change
transition_executablethat the steps can actually be carried out

Logic modes

logic.mode on a relationship may be necessary or sufficient, or absent. compound_and and alternative_or parse and are then refused with UNSUPPORTED_CAUSAL_GROUP. Absent is the normal case.

Built with LogoFlowershow