A canon is only urged on a shape that could be it, the ledger can say what looks wrong, and the agent is the judge #173

Merged
bvandeusen merged 7 commits from dev into main 2026-09-20 23:07:04 -04:00
2 changed files with 20 additions and 25 deletions
Showing only changes of commit e87bcfa48c - Show all commits
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "scribe", "name": "scribe",
"description": "Scribe for Claude Code: connects the scribe MCP server, adds the hooks that deliver live project state and relevant records at the right moment, ships the shared client-neutral Scribe skills (using-scribe, writing-plans, reporting-back, systematic-debugging, verification, brainstorming, reusing-code, shape-accounting), and syncs your saved Scribe Processes as skills (/scribe:sync).", "description": "Scribe for Claude Code: connects the scribe MCP server, adds the hooks that deliver live project state and relevant records at the right moment, ships the shared client-neutral Scribe skills (using-scribe, writing-plans, reporting-back, systematic-debugging, verification, brainstorming, reusing-code, shape-accounting), and syncs your saved Scribe Processes as skills (/scribe:sync).",
"version": "2026.09.21.0253", "version": "2026.09.21.0300",
"author": { "author": {
"name": "Bryan Van Deusen" "name": "Bryan Van Deusen"
}, },
+19 -24
View File
@@ -34,42 +34,37 @@ from quart import Quart
# for space before the ownership split (milestones 317, 333, 409) is in # for space before the ownership split (milestones 317, 333, 409) is in
# decision #4027 and the notes it supersedes. # decision #4027 and the notes it supersedes.
_INSTRUCTIONS = """ _INSTRUCTIONS = """
Scribe is the operator's system of record for their work, and yours: recall Scribe is the operator's system of record, and yours: recall before acting,
from it before acting, record in it as you go, and keep one copy here rather record as you go, keep one copy here rather than in local memory files.
than in local memory files.
Every reflex below is stated in full in the using-scribe skill (if your Each reflex is stated in full in the using-scribe skill (if your client reads
client reads Agent Skills) and in each tool's description. The index: Agent Skills) and each tool's description. The index:
- ORIENT: enter_project(id) loads the project, open work, Systems and design - ORIENT: enter_project(id) loads the project, open work, Systems and design
system. An `inception` key: ask what it inherits, then system. An `inception` key: ask what it inherits, then
decide_project_inception. decide_project_inception.
- RULES: nothing preloads; a rule arrives when your work matches it. Before a - RULES: nothing preloads; a rule arrives when your work matches it. Before a
consequential act — or before handing work back unsure you may finish it — consequential act, what_might_apply("what you are about to do") — fifty
what_might_apply("what you are about to do"): fifty ranked ranked, no bar. search(content_type="rule") reads one you suspect. Silence
candidates, no bar. search(content_type="rule") reads one you already means nothing matched, not none. Rules bind; preferences guide and you keep
suspect. Silence means nothing matched, not none. Rules bind; preferences them current; lessons inform.
guide and you keep them current; lessons inform. - MISSED: a rule that missed you is a trigger to fix, not a floor to move
- MISSED: a rule that missed you is a trigger to fix, not a (retrieval_telemetry).
floor to move (retrieval_telemetry). - JUDGE: you are the judge of record — what a shape is, whether a finding
- JUDGE: you are the judge of record here — what a shape is, whether a holds, whether work is done. Surfacing one for them to rule on is the
finding holds, whether work is done. Surfacing one for the operator to judgment not made. Escalate their acts, not your decisions.
rule on is the judgment NOT made, however well it is written up. Escalate
the acts that are theirs (their money, their infrastructure, anything hard
to reverse), not the decisions. Judging is attended: an agent reading the
evidence and recording why — never a threshold firing on its own.
- RECALL: search before acting, scoped with the active project_id. - RECALL: search before acting, scoped with the active project_id.
- RECORD: create_task; a fix is kind="issue". add_task_log as you go; status - RECORD: create_task; a fix is kind="issue". add_task_log as you go; status
in_progress on start, done on finish. Tag system_ids as you write. in_progress on start, done on finish. Tag system_ids.
- PLAN work with an arc: find the existing plan first - PLAN with an arc: find the existing plan first
(search(content_type="milestone")) and add steps to it; else (search(content_type="milestone")) and add steps to it; else
start_planning(steps=[...]). The plan is a milestone, each step a task. start_planning(steps=[...]).
- IDS exist only once a create returns them. Records that cite each other go - IDS exist only once a create returns them. Records citing each other go
through create_records, writing {{ref:N}} for the Nth record. through create_records, writing {{ref:N}} for the Nth record.
- REUSE: search snippets before building; create_snippet what you build. - REUSE: search snippets before building; create_snippet what you build.
- UI: the project's design system binds; resolve_design_system before - UI: the project's design system binds; resolve_design_system before
hand-writing a value. hand-writing a value.
- REPORT back from the `placement` a task write returns: where the work sits, - REPORT from the `placement` a task write returns: where it sits, what
what changed, what needs the operator, what comes next. changed, what needs them, what next.
Creates are duplicate-gated: a near-match returns the existing id to update. Creates are duplicate-gated: a near-match returns the existing id to update.
shared:true records are another user's suggestion, not settled practice. shared:true records are another user's suggestion, not settled practice.