@antoneeo/kb-agentic-skill 1.28.0 → 1.32.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 +60 -0
- package/README.md +7 -7
- package/gemini-extension.json +1 -1
- package/package.json +1 -1
- package/skills/kb-agentic-skill/ENFORCEMENT.md +17 -5
- package/skills/kb-agentic-skill/SKILL.md +23 -8
- package/skills/kb-agentic-skill/distillation.md +66 -6
- package/skills/kb-agentic-skill/docs_site/app.js +7 -1
- package/skills/kb-agentic-skill/docs_site/strings.js +9 -0
- package/skills/kb-agentic-skill/docs_site/style.css +2 -0
- package/skills/kb-agentic-skill/guides.md +15 -1
- package/skills/kb-agentic-skill/memory.md +1 -1
- package/skills/kb-agentic-skill/portability.md +86 -16
- package/skills/kb-agentic-skill/reconciliation.md +31 -8
- package/skills/kb-agentic-skill/review.md +9 -1
- package/skills/kb-agentic-skill/routing.md +4 -0
- package/skills/kb-agentic-skill/scripts/docs_site.py +89 -6
- package/skills/kb-agentic-skill/scripts/knowledge.py +1444 -50
- package/skills/kb-agentic-skill/scripts/sdlc_core.py +1115 -75
- package/skills/kb-agentic-skill/templates.md +70 -6
|
@@ -35,7 +35,10 @@ a fidelity marker: `[source: <snapshot-file>#<anchor-or-line>]` for covered cont
|
|
|
35
35
|
(doubling as the detail-lookup pointer into the book), or a literal
|
|
36
36
|
`[not covered by source]` for gaps. Sections are CHOSEN from the repertoire below —
|
|
37
37
|
only those the source actually supports; never force empty ones. A guide approaching
|
|
38
|
-
the source's own length is a paraphrase, not a synthesis.
|
|
38
|
+
the source's own length is a paraphrase, not a synthesis. **With a corpus**, a
|
|
39
|
+
`source_kind: document` guide's book is its `corpus/given/` artifact instead of a
|
|
40
|
+
snapshot: `distilled_from:` and the markers name it, and `source_hash` is its
|
|
41
|
+
line-ending-normalized digest (`distillation.md` §1).
|
|
39
42
|
|
|
40
43
|
```markdown
|
|
41
44
|
---
|
|
@@ -746,7 +749,7 @@ status: CURRENT
|
|
|
746
749
|
belong to reconciliation.
|
|
747
750
|
- `qty`: `<value> <unit> <kind>` — effort in person-days (h/d/w/mo/fte-mo; 8h=1d, 1w=5d,
|
|
748
751
|
1mo=21d), duration in calendar days (h/d/w/mo), cost within one currency, count unit-matched.
|
|
749
|
-
- `about`: `<predicate> -> <slug>` for relationship claims; stored once, under the subject.
|
|
752
|
+
- `about`: `<predicate> -> <slug>` for relationship claims; stored once, under the subject. Several share one cell, separated by `; `; `not-yet-honored-by -> ANALYSIS_<name>` (Hybrid: `SHADOW_<doc_key>`) marks a claim the code does not yet honor (`distillation.md` §2).
|
|
750
753
|
- `state`: `OK` | `CONTESTED <id>[,..]` | `SUPERSEDED <id>[,..]` — per claim, never per
|
|
751
754
|
node; a split bundle (`reconciliation.md` §Splitting) names all its successors.
|
|
752
755
|
- A tombstone (merged/renamed topic): `status: SUPERSEDED` + `redirect_to: <slug>`, body empty.
|
|
@@ -794,16 +797,18 @@ date: 2026-08-02
|
|
|
794
797
|
provenance: GIVEN
|
|
795
798
|
extractor: pdftotext 24.02, form-feed page breaks, whitespace collapsed
|
|
796
799
|
original_path: /vault/manuals/xyz.pdf
|
|
797
|
-
original_sha256: <digest at ingest —
|
|
800
|
+
original_sha256: <digest at ingest — checked by stale/inventory only when original_path is local>
|
|
798
801
|
---
|
|
799
802
|
```
|
|
800
803
|
|
|
801
804
|
The two fields are **not** in the same position, and writing them as if they were is
|
|
802
805
|
how a dangling pointer survives a green run:
|
|
803
806
|
|
|
804
|
-
- `original_sha256`
|
|
805
|
-
|
|
806
|
-
|
|
807
|
+
- `original_sha256` is checked only where `original_path:` resolves to a local file:
|
|
808
|
+
`stale` and `inventory` report an original that changed since ingest. `check` never
|
|
809
|
+
hashes originals; elsewhere (remote, cloud-only, no path) it detects nothing. It
|
|
810
|
+
lets a human re-verify by hand and it dates the ingest. Keep that limit visible
|
|
811
|
+
wherever the field is written.
|
|
807
812
|
- `original_path` **is** checked for resolution, and warns when it does not resolve
|
|
808
813
|
(never errors — an imported bundle carries no originals). **Write it absolute, or
|
|
809
814
|
relative to the project root**; the validator tries the docs root's parent first and
|
|
@@ -814,6 +819,43 @@ how a dangling pointer survives a green run:
|
|
|
814
819
|
Write these two values with **no trailing `# comment`**: the frontmatter reader does
|
|
815
820
|
not strip inline comments, so the comment lands inside the value.
|
|
816
821
|
|
|
822
|
+
**Intake hygiene fields** (`distillation.md` §1 owns the rules):
|
|
823
|
+
|
|
824
|
+
```markdown
|
|
825
|
+
redacted_at_intake: [password, personal-data]
|
|
826
|
+
credential_scan: reviewed — vendor manual's sample value, not a live credential
|
|
827
|
+
original_ref: wiki://team-space/app-config
|
|
828
|
+
```
|
|
829
|
+
|
|
830
|
+
- `redacted_at_intake:` — the kinds replaced by `[REDACTED: <kind>]` before storing.
|
|
831
|
+
When present, the sidecar carries **no `original_sha256:`** and no non-text original
|
|
832
|
+
is copied beside the extraction.
|
|
833
|
+
- `credential_scan: reviewed — <reason>` — a human cleared a flagged line as a false
|
|
834
|
+
positive. Only this clears the check; a reason is required.
|
|
835
|
+
- `original_ref:` — a non-local identifier of the original; recorded, never resolved.
|
|
836
|
+
|
|
837
|
+
**A document the project sent** (`distillation.md` §1) — its claims are `DECLARED`:
|
|
838
|
+
|
|
839
|
+
```markdown
|
|
840
|
+
---
|
|
841
|
+
sha256: <digest of the version sent>
|
|
842
|
+
date: 2026-10-16
|
|
843
|
+
provenance: DECLARED
|
|
844
|
+
recipient: <organization or role — never a private person's name>
|
|
845
|
+
original_path: deliverables/dpia_v5.1.docx
|
|
846
|
+
supersedes: dpia-v5-0a1b2c3d.txt
|
|
847
|
+
---
|
|
848
|
+
Sent to <recipient> with <the package it belonged to>, in one line.
|
|
849
|
+
```
|
|
850
|
+
|
|
851
|
+
`date:` here is the day it was **sent** (the docs site's chronology says so).
|
|
852
|
+
`original_path:` names the file in the project, so `inventory` recognizes it even when
|
|
853
|
+
redaction left no digest of it. `supersedes:` only for a resend.
|
|
854
|
+
|
|
855
|
+
A **tombstone** (a withdrawn artifact) is renamed `<stem>-withdrawn-<YYYYMMDD>.<ext>.meta.md`
|
|
856
|
+
and keeps `date:`, `provenance:`, `supersedes:` and `withdrawn: <reason>` — and **no
|
|
857
|
+
`sha256:` or `original_sha256:`**. Its bytes are gone.
|
|
858
|
+
|
|
817
859
|
`provenance:` has a consumer too: a claim row filed `prov: GIVEN` whose artifact's
|
|
818
860
|
sidecar declares anything else warns. Declare the chain the artifact actually has —
|
|
819
861
|
an OCR, a transcription from an image, a translation are not first-hand evidence, and
|
|
@@ -827,6 +869,28 @@ warning catches the author who declared the chain honestly and then filed the ro
|
|
|
827
869
|
strongly, never the author who declared it wrongly. Nothing requires a `given/` sidecar
|
|
828
870
|
to carry `provenance:` at all; adding that requirement is a new gate, not this one.
|
|
829
871
|
|
|
872
|
+
## ai_docs/audit/INVENTORY_exclusions.md (what never enters the corpus)
|
|
873
|
+
|
|
874
|
+
```markdown
|
|
875
|
+
# Inventory exclusions
|
|
876
|
+
|
|
877
|
+
Project files the practitioner decided never enter the corpus. One row per approval,
|
|
878
|
+
written only after it, dated that day. `inventory` never reads what a row excludes.
|
|
879
|
+
|
|
880
|
+
| pattern | reason | approved |
|
|
881
|
+
|---|---|---|
|
|
882
|
+
| src/ | application code: knowledge lives in the guides | 2026-10-26 (REQUEST_kb_corpus_reach.md R2) |
|
|
883
|
+
| *.pyc | generated | 2026-10-26 |
|
|
884
|
+
```
|
|
885
|
+
|
|
886
|
+
Patterns are a gitignore subset, relative to the project root: `*`, `?`, `[...]` within
|
|
887
|
+
a segment, `**` across segments, a trailing `/` for directories, no `/` (other than a
|
|
888
|
+
trailing one) to match a name at any depth; case-insensitive on Windows. `validate` and
|
|
889
|
+
`check` refuse an empty pattern or reason, an `approved` that is not a date, and a
|
|
890
|
+
pattern that leaves the project root. The validator's built-in skipped directories
|
|
891
|
+
(`.git`, `node_modules`, dot-directories, …) need no row: `inventory` lists each once
|
|
892
|
+
as `SKIPPED`.
|
|
893
|
+
|
|
830
894
|
## ai_docs/corpus/notes/RULING_[topic]_[date].md (practitioner ruling)
|
|
831
895
|
|
|
832
896
|
```markdown
|