[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DH4BDJRYPRAF3XHFSWCM11":3,"skill-same:01M6DH4BDJRYPRAF3XHFSWCM11":86},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M6DH4BDJRYPRAF3XHFSWCM11","premise-check",null,"Write or check the argument at the end of an evidence-backed report -- standard-form premises with their basis in words, warrants with their defeaters, the asker's questions answered by id -- and record the checker's verdict with its seven-line reason. Use when handing back a report, receiving one from a subagent, worker or peer, or relaying a checked claim upward. Not a fact check or requirement review, and not for extracting the argument of a text (use argument-extraction).","nicsuzor\u002FacademicOps","nicsuzor","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4496978?v=4","01M6DGWCFNDYP03M4DQAHA6DN1","Nicolas Suzor","01M6DGWCPXG37BMXRZZKXR0A1Z",5,"MIT","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-agy\u002Fskills\u002Fpremise-check\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"check","premise check","when","standard","checker","for","with","extracting","form","peer","review","subagent","use","worker","claim","end","evidence","id","text","back","2026-11-10 10:12:30",false,"---\nname: premise-check\ndescription: Write or check the argument at the end of an evidence-backed report -- standard-form premises with their basis in words, warrants with their defeaters, the asker's questions answered by id -- and record the checker's verdict with its seven-line reason. Use when handing back a report, receiving one from a subagent, worker or peer, or relaying a checked claim upward. Not a fact check or requirement review, and not for extracting the argument of a text (use argument-extraction).\n---\n\n# Premise Check\n\nA report that rests on evidence ends in an argument whose final conclusion answers the asker's questions. The writer lays it out so each step can be judged from the report alone; the checker judges every step and records why.\n\n**Standing rule: a format breach on an argument with at least one inference line is waivable on PASS and rewritten by the receiver; 0 inference lines, substantive defects, or rule violations in delivered work require REVISE or FAIL and cannot pass or relay upward. Rule violations in deliverables are strictly non-waivable.**\n\n## Writing the Report Argument\n\nEnd the report with one fenced `argdown` block formatted per `argdown-toulmin`. Frontmatter may include document metadata (`title`, `granularity`, `model: mode: strict`), `asks` (as a map or list of records), and `answers` (mapping ask ID to line number, statement label, or `none`).\n\n````text\n```argdown\n===\ntitle: \u003Ctitle>\ngranularity:\n  level: micro\n  floor: \"\u003Cfloor description>\"\nmodel:\n  mode: strict\nasks:\n  \u003Cask_id>: \u003Cthe asker's own words, one question>\nanswers:\n  \u003Cask_id>: \u003Cnumber of the line that answers it, or statement label>\n===\n\n(1) [Label]: \u003Cpremise with inline citation or attributes>.\n(2) \u003Cpremise quoting deciding value inline>.\n(3) \u003Cmissing premise, written in>.\n-- \u003Cwarrant rule>. Unless: \u003Cdefeater>; \u003Cruled out by (n) | not ruled out | not tried>. --\n(4) [Next]: So, \u003Cqualifier bought by (3)>, \u003Cconclusion>.\n```\n````\n\nEvery peer message carries a fenced `argdown` block. A message making no claim (such as automated harness notices, \u002Floop wakeups, or messages making no evidence-backed claims) carries the null form:\n\n````text\n```argdown\n===\nasks: none\n===\n\n[no claim]\n```\n````\n\nThe null form clears the premise-check gate with no agent action. When an expected block is absent, the gate does not open: PASS is refused, and the receiver must return it for revision (`REVISE` \"no argument supplied\"), instructing the sender: \"No argument block supplied. Load the `premise-check` skill (`ida:premise-check`) before writing your report; its Argdown dialect is a restricted subset of Argdown, so do not write the block from memory.\"\n\n### Source Attribution Guidance\n\nPremises state clean natural assertions citing sources and locators directly inline (e.g. `(path\u002Fto\u002Ffile.py:42)`, `(run: exit_code = 0)`, `[[task-id]]`). Trailing mechanical basis clauses (`-- \u003Cbasis phrase>`) and endnote tables (`notes:`, `^a`) are dropped. Per [Human Readability First](..\u002F..\u002F..\u002Frbg\u002Fskills\u002Faxioms\u002Fhuman-readability-first.md), evidence categories provide authoring guidance for source attribution, evaluated by agentic comprehension rather than rigid mechanical formulas:\n\n| Category | Evidentiary Basis | Examples \u002F Guidelines |\n| - | - | - |\n| **Primary empirical observation** | Direct execution or reading | Raw observations quoting deciding values inline (`exit_code = 0`, diffs, logs, executed tests). |\n| **Tested limits** | Direct reproduction or bounded search | Failed reproduction attempts with verbatim errors or bounded zero searches. |\n| **Governing rule** | Formal framework or specification | Axioms, project rules, system specifications, or contracts. |\n| **Reported finding** | Secondary report or task record | Secondary agent reports citing a recorded verification ID (`verdict-...`), or PKB task records. |\n| **Assumed premise** | Unchecked assumption | Explicit assumption needed to complete an inference; requires qualifier in conclusion. |\n\n### Rules for the Block\n\n1. **The ask at the top**: Copy the asker's exact words under its immutable ID (`tg-\u003Cmsg_id>`, `\u003Ctask_id>\u002FAC\u003Cn>`).\n2. **Raw empirical observations**: Premises stating observations quote deciding values inline (`exit_code = 0`, `status: MERGED`). They never state evaluative or generalising conclusions restating an acceptance criterion (such as \"AC1 is met\" or \"behavior is correct\"). Evaluative and generalising conclusions must sit below an inference bar as claims derived from those observations.\n3. **Numbered premises**: State claims in natural language, quoting deciding values and citing sources inline (e.g. `(path\u002Fto\u002Ffile.py:42)`, `(run: exit_code = 0)`). Trailing mechanical basis clauses (`-- \u003Cbasis phrase>`) are dropped.\n4. **Inline citations**: Citations and pointers live directly inline with the claims they support. Lettered endnote pointers (`^n`, `notes:`) are dropped.\n5. **The inference line**: Starts `--`, ends `--`, on one line: warrant rule, then `Unless: \u003Cdefeater>; \u003Cstatus>`.\n6. **Chain conclusions**: Each step begins `So` and chains into subsequent steps.\n7. **Relay upward**: Relaying a report upward requires its premise-check verdict; name the line each relayed sentence restates. Relay sentences only from checked argument lines without reading sources. Never relay an argument with 0 inference lines or substantive defects as fact. Disclosed rule violations in a received report must be propagated upward in the relay and never dropped across hops. Relay only premises and conclusions, each with its qualifier; a struck doubt is never relayed as a risk.\n8. **Method pairing line**: When an ask specifies a method, form, design, or value, the report carries a pairing line setting each specified feature beside what was done (e.g. `@file -> @.\u002Fat-test-target.md`; `read back -> Read tool`), naming each departure with its reason, else `departures: none`. A detail in a method specification is load-bearing regardless of typography (quoted, backticked, or plain) unless the ask's purpose shows them free. Rewording that preserves the construct is not a departure; exact wording is not required where the construct is preserved.\n\n## Checking a Received Report or Direction\n\n### Directions\n\nWhen an incoming direction arrives from another agent:\n\n1. Verify that every instruction and requirement derives faithfully from `## Ask` (or active user directives).\n2. Verify brief satisfiability: evaluate whether all demanded deliverables can be produced by your own role and route before terminating. Refuse (`REVISE`) directions demanding deliverables belonging to subsequent pipeline stages or unfulfillable by construction at your stopping point.\n3. Refuse (`REVISE`) unverified caller method or template prescriptions before logging deliverables, instructing the caller to load `ida:premise-check` before reformulating the direction. A caller may pass only `## Ask` (verbatim with ID), strategic fit\u002Fcontext, and the objective or skill invocation.\n4. Once verified, log deliverables as a frozen `## Acceptance` checklist on a PKB task before work starts.\n\n### Reports\n\nTake observed premises with a pointer as given: never open a pointer or redo the work. A checker never reads a source to check someone's claim; it reads one only to settle a genuine conflict between two records, and keeps that settling read. When a claim lacks evidence or rests on an unchecked basis, do not inspect the source: record REVISE or FAIL naming the defect. A PKB node or peer writing ranks as `worker reported, unchecked`.\n\nThe dividing line is what would settle it: running the work, or reading a record that exists now.\n\n**Strike a doubt the run will settle.** A doubt whether a route, tool or step works when run (\"I haven't checked whether X works\", a defeater of that kind left `not tried`), with no reason given that it would fail, is a speculation: strike it -- judge Valid as if it were absent, relay nothing from it, send nothing back for it. The work shows the answer on its first run, so it is never worth a probe, a trial run or a lookup; asked about it, answer that no reason was given.\n\n**Judge an admitted unchecked fact readable now; never strike it.** When the writer admits a load-bearing premise about something a record can show now (a state, what a record says, whether something happened) is unchecked (\"haven't checked whether it merged\", \"worker reported\", \"assumed\", \"checked\" or \"verified\" citing no verdict or run, a defeater of that kind left `not tried`), that premise is weak, not a doubt. Judge it under Supported: the conclusion must carry the qualifier it buys, and where it cannot bear the step's stakes, record `Valid: (n) fails #insufficient-for-stakes`. A qualifier never rescues a claim bound for the user about live state: one resting on such a premise fails.\n\nIn addition to the four inference tests, the checker examines the entire report (prose and argument) for rule compliance in the delivered work:\n\n| Test | Passes when | Failure looks like |\n| - | - | - |\n| **Rule-Consistent** | The actions, omissions, and claims in the delivered work do not contradict standing axioms, project rules, or specifications. Disclosing an out-of-scope breach under Rule 4 is compliant escalation. | Report states or admits leaving a rule breach in place in its own deliverable, waives a rule without a higher rule or direct user directive, or describes an action forbidden by a standing rule. Record it as `Valid: (n) fails #conflict` on the step the breach touches. |\n\nRun four tests on every inference line:\n\n| Test | Passes when | Failure looks like |\n| - | - | - |\n| **Valid** | Premises meet every condition of the warrant; conclusion is no wider than premises; construct matches and sample is adequate; all specified methods, forms, designs, and values are paired and accounted for. | Missing condition; unruled defeater that has a basis or names an unchecked fact readable now (a state, a record's content, whether something happened) that the step rests on (a baseless doubt the run will settle, whether a route, tool or step works when run, is struck, not ruled on); premise too weak for the step's stakes (`#insufficient-for-stakes`); rule breach (`#conflict`); scope drift (`#scope-drift`); construct mismatch or drift (`#construct-drift`: unnamed departure or silent substitution of specified method, form, design, or value); method gap (`#method-gap`: method cannot observe what is claimed); sample inadequacy (unexplained n=1 or n=2 probes asserted as proof of representative classes). |\n| **Supported** | Each premise is supported by evidence that can bear the step's stakes. Checked qualitatively against task stakes using semantic reasoning. | High-stakes step resting on unbacked or unchecked assertion, admitted unchecked premise included; a claim bound for the user about live state (configuration, repository, code, PR, merge, running work) whose premise is a report of it (task status, peer writing, PKB node) rather than its source of record, whatever qualifier the conclusion carries. Record it on the step as `Valid: (n) fails #insufficient-for-stakes`. |\n| **Answered** | Final conclusion answers what each ask ID needs in substance. An ask whose demand was unfulfillable by construction at the reporter's stopping point is satisfied when the conclusion establishes unreachability; checkers must link the conclusion (`← (n)`) and not mark it `unanswered` or issue REVISE\u002FFAIL. | Narrower conclusion; relayer acceptance items substituted for ask needs; marking an ask unanswered when its unreachability by construction is validly established. |\n| **Sufficient** | Proportionality holds: materiality, sufficiency (obvious, authority-backed, low-stakes), and necessity, with the step's stakes named in words. | Complex unbacked warrant on high-stakes step without decomposition; settling a stakes-bearing conclusion (below) as low-stakes or reversible; treating a primary ask or acceptance criterion as obvious. Record it as `Valid: (n) fails #insufficient-for-stakes`. |\n\nProportionality: accept warrants as stated when obvious, authority-backed (strictly limited to user words or governing spec), backed by a cited verdict, or cheap to reverse. A conclusion bears stakes when it answers an ask (a task's primary ask or acceptance criterion included), is relayed to the user, or authorises a merge, send or approval; \"low-stakes\", \"reversible\" and \"cheap to reverse\" never settle it, and its premises must bear those stakes themselves. Send back for decomposition only when complex, unbacked, or high-stakes.\n\n**Every reasoning failure is recorded on a `Valid:` line.** The recorder refuses REVISE and FAIL when every `Valid:` line holds and no ask is unanswered (REVISE also passes on a `Format:` slip), so a Supported, Sufficient or Rule-Consistent failure is written as `Valid: (n) fails \u003Ctag> -- \u003Cwhy>` on the step it breaks: `#insufficient-for-stakes` for premises too weak for the stakes, `#conflict` for a rule breach.\n\n#### Fidelity Procedure\n\nWhen checking an inference line or deliverable where the ask specifies a method, form, design, or value:\n\n1. **Extract specified features**: Read `## Ask` for any specified method, form, design, or value. Details in method specifications are load-bearing regardless of typography (quoted, backticked, or plain) unless the ask's purpose shows them free.\n2. **Check the pairing line**: Verify the report pairs each specified feature with what was done.\n3. **Judge departures**:\n   - An unnamed departure (silent substitution of a specified method, form, design, or value) fails `Valid` with `#construct-drift` or `#method-gap`.\n   - A block that silently swaps a specified form cannot PASS; return for revision (`REVISE`).\n   - Rewording that preserves the construct and distinction passes; do not require verbatim wording outside specified forms or methods.\n\n## Recording the Verdict\n\n- **PASS**: Every inference holds, every ask is answered, evidence sufficiency bears the stakes, and at least one inference line is tested (>= 1). Format-only defects on a substantively sound argument with >= 1 inference line are waived under `Waived:` and rewritten into standard form by the receiver before relaying upward. Rule violations in deliverables can never be waived.\n- **REVISE**: Name the line, defect tag (`#missing`, `#scope-drift`, `#conflict`, `#unanswered`, `#undercut`, `#construct-drift`, `#method-gap`, `#insufficient-for-stakes`), and remedy, and instruct the sender: \"Load the `premise-check` skill (`ida:premise-check`) before writing your revised report.\" (For absent blocks returned as `REVISE \"no argument supplied\"`, state: \"No argument block supplied. Load the `premise-check` skill (`ida:premise-check`) before writing your report; its Argdown dialect is a restricted subset of Argdown, so do not write the block from memory.\") Mandatory for substantive defects, rule violations in delivered work (return with `#conflict`), or 0 inference lines (bare assertions); cannot be relayed upward as fact. Return to sender. To send back a sound argument for a format slip you will not waive, keep every `Valid:` line `holds` and add `Format: \u003Cformat item> -- \u003Cwhat to fix>`; never record a format slip as a reasoning defect.\n- **FAIL**: Conclusion does not answer the ask or contradicts evidence. Mandatory for substantive defects; cannot be relayed upward as fact.\n\nWrite the reason as the seven keyed lines:\n\n```text\nJudged: \u003Cclaim id>; asks \u003Cask id>, \u003Cask id>\nValid: (n) holds -- \u003Crule and why it yields (n) here>\nSupported: (\u003Cpremise n>) \u003Cqualitative explanation of evidence sufficiency against stakes>\nAnswered: \u003Cask id> ← (n)\nSufficient: (n) material; \u003Cthe stakes in words>; \u003Cobvious | authority-backed | cited verdict | low-stakes (only a conclusion bearing no stakes) | sent back>; \u003Cnecessity of any objection>\nWaived: none | \u003Cformat item> -- \u003Cjustification>\nRelay: \"\u003Csentence to relay>\" ← (n) | none\n```\n\nFor arguments with multiple inference lines, all yielded conclusions must be accounted for under `Valid:`--either via multiple `Valid:` lines, indented continuation lines, semicolon clauses (`(n) holds -- ...; (m) holds -- ...`), or grouped references (`(n), (m) holds -- ...` or `(n) and (m) hold -- ...`).\n\nFormat items: `block`, `numbering`, `basis wording`, `ask wording`, `layout` (endnotes dropped\u002Fobsolete).\n\nRecord the verdict:\n\n```bash\nuv run --project \u003Cplugin-dir> python \u003Cplugin-dir>\u002Fskills\u002Fpremise-check\u002Fscripts\u002Fverdict.py --session \u003Csession_id> --claim \u003Cclaim_id> --verdict \u003CPASS|REVISE|FAIL> --reason-file \u003Cpath> [--judged-file \u003Cpath>]\n```\n\nResolve `\u003Cplugin-dir>` to the real installed plugin directory (`Path.resolve()` on symlinks) so `uv run` uses the plugin environment with `opentelemetry.sdk`, and include `--session \u003Csession_id>` (from the turn message, daily note, or active session) when `$AOPS_SESSION_ID` is unset in subshells. Pass `--judged-file \u003Cpath>` when judging a report arriving out-of-band (e.g. read from a PKB task body or messages outside gate capture) so the recorder can verify the reason against the report's `argdown` block.\n\nThe recorder refuses a PASS whose reason misses a test line or ask ID, contradicts the block, or fails machine checks (syntax error, orphan statement, misaimed undercut); on refusal, actionable errors are emitted to stderr while keeping the gate armed. When gate storage has no judged text and `--judged-file` is not provided, PASS is refused with a distinct missing gate storage diagnostic directing the caller to pass `--judged-file \u003Cpath>`.\n","# Premise Check\n\nA report that rests on evidence ends in an argument whose final conclusion answers the asker's questions. The writer lays it out so each step can be judged from the report alone; the checker judges every step and records why.\n\n**Standing rule: a format breach on an argument with at least one inference line is waivable on PASS and rewritten by the receiver; 0 inference lines, substantive defects, or rule violations in delivered work require REVISE or FAIL and cannot pass or relay upward. Rule violations in deliverables are strictly non-waivable.**\n\n## Writing the Report Argument\n\nEnd the report with one fenced `argdown` block formatted per `argdown-toulmin`. Frontmatter may include document metadata (`title`, `granularity`, `model: mode: strict`), `asks` (as a map or list of records), and `answers` (mapping ask ID to line number, statement label, or `none`).\n\n````text\n```argdown\n===\ntitle: \u003Ctitle>\ngranularity:\n  level: micro\n  floor: \"\u003Cfloor description>\"\nmodel:\n  mode: strict\nasks:\n  \u003Cask_id>: \u003Cthe asker's own words, one question>\nanswers:\n  \u003Cask_id>: \u003Cnumber of the line that answers it, or statement label>\n===\n\n(1) [Label]: \u003Cpremise with inline citation or attributes>.\n(2) \u003Cpremise quoting deciding value inline>.\n(3) \u003Cmissing premise, written in>.\n-- \u003Cwarrant rule>. Unless: \u003Cdefeater>; \u003Cruled out by (n) | not ruled out | not tried>. --\n(4) [Next]: So, \u003Cqualifier bought by (3)>, \u003Cconclusion>.\n```\n````\n\nEvery peer message carries a fenced `argdown` block. A message making no claim (such as automated harness notices, \u002Floop wakeups, or messages making no evidence-backed claims) carries the null form:\n\n````text\n```argdown\n===\nasks: none\n===\n\n[no claim]\n```\n````\n\nThe null form clears the premise-check gate with no agent action. When an expected block is absent, the gate does not open: PASS is refused, and the receiver must return it for revision (`REVISE` \"no argument supplied\"), instructing the sender: \"No argument block supplied. Load the `premise-check` skill (`ida:premise-check`) before writing your report; its Argdown dialect is a restricted subset of Argdown, so do not write the block from memory.\"\n\n### Source Attribution Guidance\n\nPremises state clean natural assertions citing sources and locators directly inline (e.g. `(path\u002Fto\u002Ffile.py:42)`, `(run: exit_code = 0)`, `[[task-id]]`). Trailing mechanical basis clauses (`-- \u003Cbasis phrase>`) and endnote tables (`notes:`, `^a`) are dropped. Per [Human Readability First](..\u002F..\u002F..\u002Frbg\u002Fskills\u002Faxioms\u002Fhuman-readability-first.md), evidence categories provide authoring guidance for source attribution, evaluated by agentic comprehension rather than rigid mechanical formulas:\n\n| Category | Evidentiary Basis | Examples \u002F Guidelines |\n| - | - | - |\n| **Primary empirical observation** | Direct execution or reading | Raw observations quoting deciding values inline (`exit_code = 0`, diffs, logs, executed tests). |\n| **Tested limits** | Direct reproduction or bounded search | Failed reproduction attempts with verbatim errors or bounded zero searches. |\n| **Governing rule** | Formal framework or specification | Axioms, project rules, system specifications, or contracts. |\n| **Reported finding** | Secondary report or task record | Secondary agent reports citing a recorded verification ID (`verdict-...`), or PKB task records. |\n| **Assumed premise** | Unchecked assumption | Explicit assumption needed to complete an inference; requires qualifier in conclusion. |\n\n### Rules for the Block\n\n1. **The ask at the top**: Copy the asker's exact words under its immutable ID (`tg-\u003Cmsg_id>`, `\u003Ctask_id>\u002FAC\u003Cn>`).\n2. **Raw empirical observations**: Premises stating observations quote deciding values inline (`exit_code = 0`, `status: MERGED`). They never state evaluative or generalising conclusions restating an acceptance criterion (such as \"AC1 is met\" or \"behavior is correct\"). Evaluative and generalising conclusions must sit below an inference bar as claims derived from those observations.\n3. **Numbered premises**: State claims in natural language, quoting deciding values and citing sources inline (e.g. `(path\u002Fto\u002Ffile.py:42)`, `(run: exit_code = 0)`). Trailing mechanical basis clauses (`-- \u003Cbasis phrase>`) are dropped.\n4. **Inline citations**: Citations and pointers live directly inline with the claims they support. Lettered endnote pointers (`^n`, `notes:`) are dropped.\n5. **The inference line**: Starts `--`, ends `--`, on one line: warrant rule, then `Unless: \u003Cdefeater>; \u003Cstatus>`.\n6. **Chain conclusions**: Each step begins `So` and chains into subsequent steps.\n7. **Relay upward**: Relaying a report upward requires its premise-check verdict; name the line each relayed sentence restates. Relay sentences only from checked argument lines without reading sources. Never relay an argument with 0 inference lines or substantive defects as fact. Disclosed rule violations in a received report must be propagated upward in the relay and never dropped across hops. Relay only premises and conclusions, each with its qualifier; a struck doubt is never relayed as a risk.\n8. **Method pairing line**: When an ask specifies a method, form, design, or value, the report carries a pairing line setting each specified feature beside what was done (e.g. `@file -> @.\u002Fat-test-target.md`; `read back -> Read tool`), naming each departure with its reason, else `departures: none`. A detail in a method specification is load-bearing regardless of typography (quoted, backticked, or plain) unless the ask's purpose shows them free. Rewording that preserves the construct is not a departure; exact wording is not required where the construct is preserved.\n\n## Checking a Received Report or Direction\n\n### Directions\n\nWhen an incoming direction arrives from another agent:\n\n1. Verify that every instruction and requirement derives faithfully from `## Ask` (or active user directives).\n2. Verify brief satisfiability: evaluate whether all demanded deliverables can be produced by your own role and route before terminating. Refuse (`REVISE`) directions demanding deliverables belonging to subsequent pipeline stages or unfulfillable by construction at your stopping point.\n3. Refuse (`REVISE`) unverified caller method or template prescriptions before logging deliverables, instructing the caller to load `ida:premise-check` before reformulating the direction. A caller may pass only `## Ask` (verbatim with ID), strategic fit\u002Fcontext, and the objective or skill invocation.\n4. Once verified, log deliverables as a frozen `## Acceptance` checklist on a PKB task before work starts.\n\n### Reports\n\nTake observed premises with a pointer as given: never open a pointer or redo the work. A checker never reads a source to check someone's claim; it reads one only to settle a genuine conflict between two records, and keeps that settling read. When a claim lacks evidence or rests on an unchecked basis, do not inspect the source: record REVISE or FAIL naming the defect. A PKB node or peer writing ranks as `worker reported, unchecked`.\n\nThe dividing line is what would settle it: running the work, or reading a record that exists now.\n\n**Strike a doubt the run will settle.** A doubt whether a route, tool or step works when run (\"I haven't checked whether X works\", a defeater of that kind left `not tried`), with no reason given that it would fail, is a speculation: strike it -- judge Valid as if it were absent, relay nothing from it, send nothing back for it. The work shows the answer on its first run, so it is never worth a probe, a trial run or a lookup; asked about it, answer that no reason was given.\n\n**Judge an admitted unchecked fact readable now; never strike it.** When the writer admits a load-bearing premise about something a record can show now (a state, what a record says, whether something happened) is unchecked (\"haven't checked whether it merged\", \"worker reported\", \"assumed\", \"checked\" or \"verified\" citing no verdict or run, a defeater of that kind left `not tried`), that premise is weak, not a doubt. Judge it under Supported: the conclusion must carry the qualifier it buys, and where it cannot bear the step's stakes, record `Valid: (n) fails #insufficient-for-stakes`. A qualifier never rescues a claim bound for the user about live state: one resting on such a premise fails.\n\nIn addition to the four inference tests, the checker examines the entire report (prose and argument) for rule compliance in the delivered work:\n\n| Test | Passes when | Failure looks like |\n| - | - | - |\n| **Rule-Consistent** | The actions, omissions, and claims in the delivered work do not contradict standing axioms, project rules, or specifications. Disclosing an out-of-scope breach under Rule 4 is compliant escalation. | Report states or admits leaving a rule breach in place in its own deliverable, waives a rule without a higher rule or direct user directive, or describes an action forbidden by a standing rule. Record it as `Valid: (n) fails #conflict` on the step the breach touches. |\n\nRun four tests on every inference line:\n\n| Test | Passes when | Failure looks like |\n| - | - | - |\n| **Valid** | Premises meet every condition of the warrant; conclusion is no wider than premises; construct matches and sample is adequate; all specified methods, forms, designs, and values are paired and accounted for. | Missing condition; unruled defeater that has a basis or names an unchecked fact readable now (a state, a record's content, whether something happened) that the step rests on (a baseless doubt the run will settle, whether a route, tool or step works when run, is struck, not ruled on); premise too weak for the step's stakes (`#insufficient-for-stakes`); rule breach (`#conflict`); scope drift (`#scope-drift`); construct mismatch or drift (`#construct-drift`: unnamed departure or silent substitution of specified method, form, design, or value); method gap (`#method-gap`: method cannot observe what is claimed); sample inadequacy (unexplained n=1 or n=2 probes asserted as proof of representative classes). |\n| **Supported** | Each premise is supported by evidence that can bear the step's stakes. Checked qualitatively against task stakes using semantic reasoning. | High-stakes step resting on unbacked or unchecked assertion, admitted unchecked premise included; a claim bound for the user about live state (configuration, repository, code, PR, merge, running work) whose premise is a report of it (task status, peer writing, PKB node) rather than its source of record, whatever qualifier the conclusion carries. Record it on the step as `Valid: (n) fails #insufficient-for-stakes`. |\n| **Answered** | Final conclusion answers what each ask ID needs in substance. An ask whose demand was unfulfillable by construction at the reporter's stopping point is satisfied when the conclusion establishes unreachability; checkers must link the conclusion (`← (n)`) and not mark it `unanswered` or issue REVISE\u002FFAIL. | Narrower conclusion; relayer acceptance items substituted for ask needs; marking an ask unanswered when its unreachability by construction is validly established. |\n| **Sufficient** | Proportionality holds: materiality, sufficiency (obvious, authority-backed, low-stakes), and necessity, with the step's stakes named in words. | Complex unbacked warrant on high-stakes step without decomposition; settling a stakes-bearing conclusion (below) as low-stakes or reversible; treating a primary ask or acceptance criterion as obvious. Record it as `Valid: (n) fails #insufficient-for-stakes`. |\n\nProportionality: accept warrants as stated when obvious, authority-backed (strictly limited to user words or governing spec), backed by a cited verdict, or cheap to reverse. A conclusion bears stakes when it answers an ask (a task's primary ask or acceptance criterion included), is relayed to the user, or authorises a merge, send or approval; \"low-stakes\", \"reversible\" and \"cheap to reverse\" never settle it, and its premises must bear those stakes themselves. Send back for decomposition only when complex, unbacked, or high-stakes.\n\n**Every reasoning failure is recorded on a `Valid:` line.** The recorder refuses REVISE and FAIL when every `Valid:` line holds and no ask is unanswered (REVISE also passes on a `Format:` slip), so a Supported, Sufficient or Rule-Consistent failure is written as `Valid: (n) fails \u003Ctag> -- \u003Cwhy>` on the step it breaks: `#insufficient-for-stakes` for premises too weak for the stakes, `#conflict` for a rule breach.\n\n#### Fidelity Procedure\n\nWhen checking an inference line or deliverable where the ask specifies a method, form, design, or value:\n\n1. **Extract specified features**: Read `## Ask` for any specified method, form, design, or value. Details in method specifications are load-bearing regardless of typography (quoted, backticked, or plain) unless the ask's purpose shows them free.\n2. **Check the pairing line**: Verify the report pairs each specified feature with what was done.\n3. **Judge departures**:\n   - An unnamed departure (silent substitution of a specified method, form, design, or value) fails `Valid` with `#construct-drift` or `#method-gap`.\n   - A block that silently swaps a specified form cannot PASS; return for revision (`REVISE`).\n   - Rewording that preserves the construct and distinction passes; do not require verbatim wording outside specified forms or methods.\n\n## Recording the Verdict\n\n- **PASS**: Every inference holds, every ask is answered, evidence sufficiency bears the stakes, and at least one inference line is tested (>= 1). Format-only defects on a substantively sound argument with >= 1 inference line are waived under `Waived:` and rewritten into standard form by the receiver before relaying upward. Rule violations in deliverables can never be waived.\n- **REVISE**: Name the line, defect tag (`#missing`, `#scope-drift`, `#conflict`, `#unanswered`, `#undercut`, `#construct-drift`, `#method-gap`, `#insufficient-for-stakes`), and remedy, and instruct the sender: \"Load the `premise-check` skill (`ida:premise-check`) before writing your revised report.\" (For absent blocks returned as `REVISE \"no argument supplied\"`, state: \"No argument block supplied. Load the `premise-check` skill (`ida:premise-check`) before writing your report; its Argdown dialect is a restricted subset of Argdown, so do not write the block from memory.\") Mandatory for substantive defects, rule violations in delivered work (return with `#conflict`), or 0 inference lines (bare assertions); cannot be relayed upward as fact. Return to sender. To send back a sound argument for a format slip you will not waive, keep every `Valid:` line `holds` and add `Format: \u003Cformat item> -- \u003Cwhat to fix>`; never record a format slip as a reasoning defect.\n- **FAIL**: Conclusion does not answer the ask or contradicts evidence. Mandatory for substantive defects; cannot be relayed upward as fact.\n\nWrite the reason as the seven keyed lines:\n\n```text\nJudged: \u003Cclaim id>; asks \u003Cask id>, \u003Cask id>\nValid: (n) holds -- \u003Crule and why it yields (n) here>\nSupported: (\u003Cpremise n>) \u003Cqualitative explanation of evidence sufficiency against stakes>\nAnswered: \u003Cask id> ← (n)\nSufficient: (n) material; \u003Cthe stakes in words>; \u003Cobvious | authority-backed | cited verdict | low-stakes (only a conclusion bearing no stakes) | sent back>; \u003Cnecessity of any objection>\nWaived: none | \u003Cformat item> -- \u003Cjustification>\nRelay: \"\u003Csentence to relay>\" ← (n) | none\n```\n\nFor arguments with multiple inference lines, all yielded conclusions must be accounted for under `Valid:`--either via multiple `Valid:` lines, indented continuation lines, semicolon clauses (`(n) holds -- ...; (m) holds -- ...`), or grouped references (`(n), (m) holds -- ...` or `(n) and (m) hold -- ...`).\n\nFormat items: `block`, `numbering`, `basis wording`, `ask wording`, `layout` (endnotes dropped\u002Fobsolete).\n\nRecord the verdict:\n\n```bash\nuv run --project \u003Cplugin-dir> python \u003Cplugin-dir>\u002Fskills\u002Fpremise-check\u002Fscripts\u002Fverdict.py --session \u003Csession_id> --claim \u003Cclaim_id> --verdict \u003CPASS|REVISE|FAIL> --reason-file \u003Cpath> [--judged-file \u003Cpath>]\n```\n\nResolve `\u003Cplugin-dir>` to the real installed plugin directory (`Path.resolve()` on symlinks) so `uv run` uses the plugin environment with `opentelemetry.sdk`, and include `--session \u003Csession_id>` (from the turn message, daily note, or active session) when `$AOPS_SESSION_ID` is unset in subshells. Pass `--judged-file \u003Cpath>` when judging a report arriving out-of-band (e.g. read from a PKB task body or messages outside gate capture) so the recorder can verify the reason against the report's `argdown` block.\n\nThe recorder refuses a PASS whose reason misses a test line or ask ID, contradicts the block, or fails machine checks (syntax error, orphan statement, misaimed undercut); on refusal, actionable errors are emitted to stderr while keeping the gate armed. When gate storage has no judged text and `--judged-file` is not provided, PASS is refused with a distinct missing gate storage diagnostic directing the caller to pass `--judged-file \u003Cpath>`.\n",{"name":5,"description":7},"main","d56e7cf7bf73b7e853569ff70658b4473502e732","ida-agy\u002Fskills\u002Fpremise-check",3,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps","https:\u002F\u002Fgithub.com\u002Fnicsuzor","https:\u002F\u002Fnic.suzor.net\u002F","2026-11-11 20:31:05",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add nicsuzor\u002FacademicOps --skill premise-check",{"tool":58,"command":59},"bunx","bunx skills add nicsuzor\u002FacademicOps --skill premise-check",{"tool":61,"command":62},"pnpm","pnpm dlx skills add nicsuzor\u002FacademicOps --skill premise-check","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-agy\u002Fskills\u002Fpremise-check\u002FSKILL.md",true,[66,72,76,80],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Fchecker-reason.md","REFERENCE","参考文档",5514,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-agy\u002Fskills\u002Fpremise-check\u002Freferences\u002Fchecker-reason.md",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Freport-form.md",4554,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-agy\u002Fskills\u002Fpremise-check\u002Freferences\u002Freport-form.md",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fvocabulary.toml",1630,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-agy\u002Fskills\u002Fpremise-check\u002Freferences\u002Fvocabulary.toml",{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"scripts\u002Fverdict.py","SCRIPT","脚本",1211,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-agy\u002Fskills\u002Fpremise-check\u002Fscripts\u002Fverdict.py",[87,112,117,122,127,150],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":39},"01M6M6JR6VXPDA3MDPVS36DSSP","refresh-questions","Sweep and refresh open questions in the Telegram Mini App by closing questions that are answered elsewhere, superseded, or asking for completed actions, and ensuring active open questions carry recommendations and context. Use when asked to refresh questions, sweep stale questions, or keep the Mini App decision queue current. Exclude for asking new questions or routine chat replies.","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fopenclaw\u002Fida-telegram\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[94,95,96,97,98,99,100,101,31,102,103,104,105,106,107,108,109,110,111,24],"refresh","refresh questions","questions","actions","telegram mini app","open","decision","context","queue","telegram","stale","chat","active","recommendations","app","keep","replies","closing",{"skillNo":113,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":39},"01M6M6JGW7Q0SC5B28TQ7PKE8E","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-telegram-openclaw\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[94,95,96,97,98,99,100,101,31,102,103,104,105,106,107,108,109,110,111,24],{"skillNo":118,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":39},"01M6M6J7D0ZTQ4VSS5ADRSA12E","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-telegram-claude\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[94,95,96,97,98,99,100,101,31,102,103,104,105,106,107,108,109,110,111,24],{"skillNo":123,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":39},"01M6M6EP6BK1DDN2212S7Y95G0","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Fida-telegram\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[94,95,96,97,98,99,100,101,31,102,103,104,105,106,107,108,109,110,111,24],{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":39},"01M6G9Q8538NENA2TE2V4HPRSF","dispatch-queue","Show the user the tasks ready to dispatch, ranked with a recommendation on each, and start workers on the ones the user approves -- redirects to universal workflow template wf-dispatch-queue. Use for \"what's ready\", \"what should we dispatch\", or \"dispatch the queue\". Exclude for starting workers on named tasks without the user's choice (use dispatch) or graph truth maintenance (use reconcile).","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fopenclaw\u002Fida\u002Fskills\u002Fdispatch-queue\u002FSKILL.md",[],[134,102,135,136,137,138,139,140,141,142,31,143,144,145,146,147,148,149,25],"dispatch","dispatch queue","workflow","tasks","graph","start","template","choice","user","reconcile","ready","maintenance","workers","show","wf","recommendation",{"skillNo":151,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":39},"01M6G9P9M3PQXPX3647RA5E4D0","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-openclaw\u002Fskills\u002Fdispatch-queue\u002FSKILL.md",[],[134,102,135,136,137,138,139,140,141,142,31,143,144,145,146,147,148,149,25]]