Resolve a full-pass disposition
Type: kb/types/instruction.md
Use this procedure when a typed kb/reports/state/full-pass/*/*/full-pass-report.md has resolution: pending, or when a failed guard left a report requiring reconciliation. The report and its .txt captures are one retention unit; never remove or rewrite a capture independently.
Inputs:
{report-path}— onefull-pass-report.mdunderkb/reports/state/full-pass/.- explicit user decision when accepting, rejecting, or applying an alternative. Agents may mark
supersededonly from a deterministic changed-input guard result.
Inspect and guard
- Read the full report and its
source,disposition, rationale, merge fields, and currentresolution. Stop if it is notpendingunless reconciling an interrupted transition. - Run
commonplace-validate {report-path}. A validation failure blocks resolution. - Run
commonplace-guard-full-pass-report {report-path}immediately before recording a rejection or beginning any filesystem mutation. - Interpret the JSON and exit status:
- Exit 0 with every input
matching: the decision may proceed. - Exit 1 with any
missingorcorrupt-captureinput: leaveresolution: pendingand reconcile, whatever the other inputs report. Absence cannot prove a delete, merge, or rehome succeeded; capture corruption is not source drift. Reconciliation precedes supersession. - Exit 1 with
changedinputs and no missing or corrupt input: preserve every live artifact and resolve the report tosupersededwithresolution_authority: version-guard. State which guarded paths changed. Do not accept, reject, rebase, or apply an alternative. - Exit 2: leave the report unchanged and repair or reconcile the invalid invocation/report.
If several inputs are returned, inspect every result; the command never short-circuits after the first failure. The guard compares each path with its latest packet capture (final.txt after a completed keep pass, otherwise source.txt).
Resolve a matching recommendation
Proceed only with an explicit user decision:
- Accept revise. The packet's Revision brief names the objection, candidate replacement claims with their mode guards, and the citer scope. The author revises the note under the notes contract — retitling, renaming with
commonplace-relocate-note, and reconciling inbound citers' link text and summaries as the brief's scope requires — or writes a different repair that meets the objection. The candidate claims are suggestions; adopting one is not required. Runcommonplace-validateon every touched artifact. Recordacceptedwith the note's surviving path (and any relocated path) inresulting_paths. A new full pass on the revised note starts from a fresh capture. - Accept delete. Delete only
source. Verify it is absent and that no unintended path changed. Then recordaccepted;resulting_pathsis empty. - Accept merge. Reconcile the captured source into the named live
merge_targetas a semantic edit, update affected backlinks as needed, remove invaliduser-verifiedattestation from the edited target, and delete the source only after the target contains the accepted result. Verify the source is absent, the target exists at the recorded path, and validation succeeds. Recordacceptedwith the target inresulting_paths. Do not substitutecommonplace-relocate-notefor semantic reconciliation. - Accept rehome. The packet's Disposition names the target collection and whether the remedy is a whole move or a split. For a whole rehome, move
sourceto the target collection withcommonplace-relocate-note(which rewrites inbound link paths and the redirect map), retype the note'stype:frontmatter to the target collection's type, and revise it to fit the target's text contract (for example, drop first-person operational framing when the target requires a faithful system description). For a split, first author the extracted transferable claim as a new note in the origin collection, then rehome the operational remainder as above. In both cases update inbound citers' visible link text and summaries, remove invaliduser-verifiedattestation from any edited artifact, and runcommonplace-validateon every touched artifact. Recordacceptedwith every surviving path (the relocated note, and for a split the extracted note) inresulting_paths. - Reject. Leave source and target byte-identical. Record
rejectedwith every guarded live path inresulting_pathsand explain why the recommendation was declined. - Apply an alternative. Perform only the user-authorized alternative, verify every resulting path and validate each edited artifact, then record
alternative-appliedwith all surviving result paths. An opposite-direction merge is an alternative, not acceptance of the original merge.
Never record a terminal state before its filesystem postconditions succeed. If mutation succeeds only partly, leave the report pending and reconcile the ambiguous state.
Render terminal resolution
Update the canonical frontmatter fields:
resolution: accepted | rejected | alternative-applied | superseded
resolved_at: "<UTC ISO-8601 timestamp>"
resolution_authority: user | version-guard
resolution_summary: <what happened>
resolution_rationale: <why>
resulting_paths: [<every surviving path left by the resolution>]
Use user only for accepted, rejected, or alternative decisions. Use version-guard only for deterministic supersession caused by a readable changed input. Deterministically render ## Resolution from those fields: null or empty values are —; non-empty resulting paths are comma-separated code spans.
Run commonplace-validate {report-path} after rendering. Retain the report and captures while a rejection or alternative remains load-bearing. An accepted report may be removed with its packet after Git history durably records the operation; pending reports — for any of the four hand-back dispositions — must never be pruned.