@antoneeo/kb-agentic-skill 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  Every significant change to this skill is recorded here.
4
4
 
5
+ ## [1.10.0] - 2026-08-28
6
+
7
+ F-043 -- the revision doctrine: documents read as current state.
8
+
9
+ ### Added
10
+ - **`## Revision — the full re-read` (SKILL.md).** Incorporating new knowledge
11
+ into an existing document is a rewrite, not an append: full re-read first,
12
+ body rewritten to current state, history in the Diary (past entries never
13
+ rewritten -- a correction is a new entry), claim tables exempt (rows move only
14
+ per reconciliation), node frontmatter exempt (a revision never re-parents),
15
+ and a multi-document pass re-reads PER DOCUMENT. Wired where the trigger
16
+ fires: the L2 triage row and the L3 Phase-4 flow (citation-only pointers);
17
+ the honest limit is in the doctrine's own text. Born from a field post-mortem
18
+ (12 documents realigned by delta-append; stale sentences left standing) --
19
+ and completed by its own review: three rounds, each catching the doctrine's
20
+ failure mode inside its own ANALYSIS.
21
+ - **The `remind` line carries the gesture** ("Re-read it whole and rewrite it
22
+ to current state ..."): 443 chars, ~75 tokens per prompt, still one constant
23
+ zero-read line.
24
+
5
25
  ## [1.9.0] - 2026-08-28
6
26
 
7
27
  F-042 -- the install wires the hook; the incomprehensible question dies.
package/README.md CHANGED
@@ -24,6 +24,8 @@ Two axes are kept apart on purpose — **abstraction** (a topic made of topics:
24
24
 
25
25
  7. **Capture — the day's decisions reach the ledger before they evaporate.** At a user-signed closing ("chiudiamo"), one sweep question — carrying its own inline result: "today I recorded X and Y — any other decisions from today?" — reaches even the decisions taken outside the session, which no transcript search could find. What surfaces lands on the existing rails (an elicited dated note, an L1 claim row) with explicit provenance; the sweep is idempotent (nothing captured twice), never creates topics, and stays silent when no one signed off. The kb `orient` shows notes recency at every session start — dated from note frontmatter, because file mtimes lie after a clone or worktree — so a missed capture is visible the next morning.
26
26
 
27
+ 8. **Revision — documents read as current state.** Incorporating new knowledge into an existing document is a full re-read and a body rewrite, not a stack of dated deltas: anchored edits are each correct while the document as a whole rots. The doctrine keeps history in the Diary (past entries never rewritten), leaves claim tables to reconciliation and graph edges to the taxonomy, and runs per document even in a multi-document pass. Born from a real field post-mortem: twelve documents realigned by append, every untouched sentence left standing as printed truth.
28
+
27
29
  Deliberately absent: any per-node coverage or completion state. `gaps:` says what a node lacks; nothing collects it into a dashboard. A **source** does record how far it has been read, but on its own sidecar and nowhere else — the corpus index prints that fact for every artifact, including the finished ones, because a list of only what is behind is the dashboard this method refuses.
28
30
 
29
31
  ## Key features
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kb-agentic-skill",
3
- "version": "1.9.0",
3
+ "version": "1.10.0",
4
4
  "description": "Knowledge-Base & Document-First protocol with risk triage, Vision governance, signal distillation and optional devPNT integration.",
5
5
  "author": "Antonio Pinto (https://github.com/Antoneeo)"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antoneeo/kb-agentic-skill",
3
- "version": "1.9.0",
3
+ "version": "1.10.0",
4
4
  "description": "Knowledge-Base & Document-First protocol for Claude Code, Gemini CLI, Google Antigravity and Codex with risk triage, Vision governance, signal distillation and optional devPNT integration.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -169,8 +169,8 @@ Gemini CLI — wire the same command into its startup-hook mechanism if present;
169
169
  `orient` fires once, at session start; a long session drifts after it (a compaction,
170
170
  ten turns of other work -- the F-041 field report). `sdlc_check.py remind` prints ONE
171
171
  constant line -- the kb minimum: the triage levels, the topic-index recall trigger, the
172
- capture moment -- for the client to inject at every prompt. Cost: ~50 tokens per
173
- prompt, which is exactly why `init` never wires it and never will by default: the
172
+ capture moment, the revision gesture -- for the client to inject at every prompt.
173
+ Cost: 443 characters, ~75 tokens per prompt, which is exactly why `init` never wires it and never will by default: the
174
174
  per-turn cost is the project's choice. The line is constant and zero-read, so nothing
175
175
  repo-controlled can ride into the agent's context through it, and the vision's
176
176
  no-per-turn-graph-queries non-goal stays honored -- the line re-arms the
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: kb-agentic
3
- version: 1.9.0
3
+ version: 1.10.0
4
4
  description: Knowledge-Base & Document-First protocol with risk-proportional triage, Vision as a guide, Signal Distillation, a complete Standalone mode and optional symbiosis with devPNT. Use for user documentation, knowledge extraction, SOPs, research notes, decision logs, knowledge management — and for answering project questions from the claim ledger and topic graph.
5
5
  author: Antonio Pinto (https://github.com/Antoneeo)
6
6
  copyright: (c) 2026 Antonio Pinto
@@ -46,7 +46,7 @@ Always classify the request before choosing the process. Declare the chosen leve
46
46
  | Level | Criteria | Required process |
47
47
  |---|---|---|
48
48
  | **L1 - Quick Fact / Snippet** | One claim row added to an existing topic; a typo; a preference update. No node created, no source entering the corpus, no frontmatter change. | Implement edit directly in existing note. No new documents. |
49
- | **L2 - Propagation of settled knowledge** | The fact is **already settled** in the corpus and the work carries it into existing documents — restating, correcting a stale copy, updating an SOP that quotes it. No node created or superseded, no hierarchy change, no node frontmatter change, no new source ingested. | Mini-analysis in message: objective, impact, sources, validation. Update existing document or create single SOP/note. |
49
+ | **L2 - Propagation of settled knowledge** | The fact is **already settled** in the corpus and the work carries it into existing documents — restating, correcting a stale copy, updating an SOP that quotes it. No node created or superseded, no hierarchy change, no node frontmatter change, no new source ingested. | Mini-analysis in message: objective, impact, sources, validation. Update existing document (full re-read per `## Revision`) or create single SOP/note. |
50
50
  | **L3 - New knowledge unit / Corpus** | A source enters the corpus; a topic node is created or superseded; the hierarchy moves; a conflict must be reconciled; or what a claim asserts changes. | Full workflow: Vision Gate, Spec Elicitation, Taxonomy Pass, Knowledge Analysis, Distillation, Review, Indexing. |
51
51
  | **Spike - Exploration** | Time-boxed exploratory research or draft without merging into official KB. | Outcome in `ai_docs/solutions/SPIKE_[topic].md`. |
52
52
 
@@ -124,7 +124,7 @@ Use this mode when `devpnt_*` tools are available and point at the current proje
124
124
  - **Design review gate (end of Phase 3, before any drafting):** the analysis is reviewed by somebody other than its author — a subagent with fresh context, or a declared self-pass when no higher rung is usable — a permission-gated rung is asked about, never silently skipped (`review.md`). Follow `review.md`; log the outcome in `audit/reviews/REVIEW_LOG.md`. A knowledge structure reviewed only by the person who chose it is not reviewed.
125
125
 
126
126
  ### 4. Knowledge Processing & Distillation
127
- - **Isolate the work (Branch/worktree hygiene).** Distillation rewrites existing notes: do it on a branch or a worktree, never directly on the shared corpus, so a half-finished reconciliation is never what the next reader finds.
127
+ - **Isolate the work (Branch/worktree hygiene).** Distillation rewrites existing notes — full re-read per `## Revision` — and does it on a branch or a worktree, never directly on the shared corpus, so a half-finished reconciliation is never what the next reader finds.
128
128
  - Before drafting (L2/L3; L1 exempt), **consult the guide router** for a guide covering the task and read it first (the consult trigger, `guides.md` §0). A targeted description match, not a blanket read. Its result is the router verdict already declared with the triage level (Rule Zero).
129
129
  - Execute knowledge extraction using **Signal Distillation** (`distillation.md`).
130
130
  - **Opt-in subagent execution**: for an L3 with an approved analysis, the work MAY be executed via subagents per `dispatch.md`; default stays same-session.
@@ -243,6 +243,24 @@ exist — this section adds only the MOMENT.
243
243
  - **Silence stays legal where no one signed off**: no closing signal → no question,
244
244
  no ritual line.
245
245
 
246
+ ## Revision — the full re-read
247
+
248
+ Incorporating new knowledge into an existing document is a rewrite, not an
249
+ append: anchored edits are each correct while the global invariant — the body
250
+ reads as CURRENT state — is never re-verified. The gesture:
251
+ - Re-read the WHOLE document before editing; then rewrite the body so it reads
252
+ as written today — new knowledge fused, never quarantined in dated
253
+ sections — never append a delta.
254
+ - History goes to the Diary/notes, never an inline chronicle — and past Diary
255
+ entries are never rewritten: a correction is a new entry.
256
+ - A SUPERSEDED banner is a tombstone, never a revision device in a living doc.
257
+ - Claim tables are EXEMPT (rows move only per `reconciliation.md`) and node
258
+ frontmatter moves only per `taxonomy.md` — a revision never re-parents; the
259
+ rewrite governs prose, never the ledger or the graph edges.
260
+ - A multi-document pass re-reads PER DOCUMENT; set coverage is not integrity.
261
+ - The re-read raises the probability of catching a false premise; it cannot
262
+ guarantee it — domain judgment stays the human's.
263
+
246
264
  ## Mechanical Enforcement
247
265
  - `scripts/sdlc_check.py index`: updates `ai_docs/INDEX.md` and `ai_docs/reference/INDEX.md`.
248
266
  - `scripts/sdlc_check.py validate`: validates YAML frontmatter (`status`, `description`).
@@ -1602,7 +1602,7 @@ def kb_cmd_remind(_argv):
1602
1602
  """F-041 item B: the per-turn one-line reminder (UserPromptSubmit, opt-in).
1603
1603
 
1604
1604
  A CONSTANT, zero-read line -- the kb minimum an agent needs re-armed every
1605
- prompt: triage, the recall trigger, the capture moment. Constant by
1605
+ prompt: triage, the recall trigger, the capture moment, the revision gesture. Constant by
1606
1606
  contract: nothing repo-controlled may ride a line injected into the agent's
1607
1607
  context every turn, and zero reads is what keeps the per-turn cost flat.
1608
1608
  The vision's non-goal bans per-turn GRAPH queries; this line only re-arms
@@ -1614,7 +1614,7 @@ def kb_cmd_remind(_argv):
1614
1614
  "settled knowledge, L3 new knowledge unit, Spike exploration; declare "
1615
1615
  "the level. Answering about this project's domain? Read topics/INDEX.md "
1616
1616
  "under the docs root first and cite claim ids, or state no coverage. "
1617
- "Decisions made today get recorded in the KB at session close.")
1617
+ "Decisions made today get recorded in the KB at session close. Revising an existing document? Re-read it whole and rewrite it to current state -- never append a delta.")
1618
1618
  return 0
1619
1619
 
1620
1620