@skein-code/cli 0.3.15 → 0.3.17

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.
@@ -53,7 +53,9 @@
53
53
  generation. After the write succeeds, compare only newly added or at least
54
54
  1.5x-expanded functions before refreshing changed index paths. Exact
55
55
  normalized hashes identify Type-1/2 clones; winnowed 10-token shingles and
56
- Jaccard similarity identify warning-only Type-3 candidates. Type-4 semantic
56
+ Jaccard similarity identify Type-3 candidates. The repository-owned fixture
57
+ matrix calibrates threshold 0.55: unsuppressed Type-1/2 matches block the
58
+ existing completion gate, while Type-3 remains warning-only. Type-4 semantic
57
59
  equivalence is explicitly outside this deterministic contract.
58
60
  12. Run configured verification commands after changes. The completion gate accepts
59
61
  only current successful test, typecheck, lint, build, check, or `git diff
@@ -98,6 +100,16 @@ exact hash, and winnowed hashes. The generation cache is cleared on load, full
98
100
  build, targeted upsert, and deletion. Audit receipts never retain source,
99
101
  normalized tokens, literal contents, prompts, or raw retrieval failures.
100
102
 
103
+ Duplication findings are folded into the existing completion record rather than
104
+ creating a parallel completion state. Fixture benchmarks establish the required
105
+ precision for calibrated Type-1/2 blocking; Type-3 remains warning-only. Active
106
+ matches receive stable, bounded ids; the optional `duplication_audit` read tool
107
+ is exposed only while unsuppressed findings exist. Suppression is exact-match,
108
+ reason-coded, and persisted as a content-free audit receipt. Repaired/deleted/
109
+ small functions produce a `clear` receipt for paths that previously carried an
110
+ active finding, so the summary cannot retain stale warnings. Legacy receipts
111
+ without ids remain readable and are never suppressible.
112
+
101
113
  ### Prompt layers
102
114
 
103
115
  The runner keeps the cacheable system prefix separate from mutable task state:
@@ -9,7 +9,7 @@ one of the milestones below.
9
9
 
10
10
  - Product name: `Skein`; primary executable: `skein`.
11
11
  - Compatibility executables: `mosaic` and `mosaic-code`.
12
- - Current repository version: `0.3.15`.
12
+ - Current repository version: `0.3.16`.
13
13
  - Runtime requirement: Node.js `>=22.16.0` (the runtime uses unflagged
14
14
  `node:sqlite` with FTS5, and current CLI/build dependencies require this
15
15
  Node 22 baseline).
@@ -41,8 +41,8 @@ npm audit --omit=dev
41
41
  npm run release:verify -- --output-dir artifacts/package
42
42
  ```
43
43
 
44
- The latest verified package is `skein-code-cli-0.3.15.tgz`. The verifier writes
45
- its SHA-256 to `artifacts/package/skein-code-cli-0.3.15.tgz.sha256`, and CI
44
+ The latest verified package is `skein-code-cli-0.3.16.tgz`. The verifier writes
45
+ its SHA-256 to `artifacts/package/skein-code-cli-0.3.16.tgz.sha256`, and CI
46
46
  retains the checksum beside the package metadata. The checksum is deliberately
47
47
  not copied into this packaged document because doing so would change the
48
48
  archive it describes.
@@ -54,10 +54,10 @@ short-height case. The current full-suite count is recorded from the latest
54
54
 
55
55
  ## Recommended Order
56
56
 
57
- ### P0-D: Warning-only repository reuse and duplication audit
57
+ ### P0-D: Repository reuse and calibrated duplication enforcement
58
58
 
59
59
  Version `0.3.14` added the prompt ladder and pre-write `ReuseReceipt`. Version
60
- `0.3.15` adds a post-write deterministic audit for ordinary TS/TSX/JS/JSX/MJS/
60
+ `0.3.15` added a post-write deterministic audit for ordinary TS/TSX/JS/JSX/MJS/
61
61
  CJS functions. The audit captures a content-free baseline before mutation,
62
62
  normalizes identifiers plus literals, uses exact hashes and 10-token
63
63
  shingle/winnowing Jaccard matching, and runs before changed-path index refresh.
@@ -66,10 +66,22 @@ renames, moves, deletions, small functions, tests, fixtures, generated/vendor/
66
66
  dist/minified/declaration files, and failed writes stay quiet. Receipts expose
67
67
  at most eight path/symbol/similarity matches through session, TUI, JSON, and
68
68
  JSONL without storing source, normalized tokens, prompts, or raw index errors.
69
- Type-1/2 and Type-3 remain warning-only; unavailable evidence is `unresolved`,
70
- never a false pass. The next slice is completion-gate suppression UX and
71
- deterministic benchmark/threshold calibration. Type-4 semantic equivalence is
72
- not promised.
69
+ Type-3 remains warning-only and unavailable evidence is `unresolved`, never a
70
+ false pass. The repository-owned `duplication-benchmark-v1` fixture matrix
71
+ calibrated threshold `0.55` at 100% recall, 100% precision, and 0% legitimate
72
+ boundary false-positive rate. Unsuppressed Type-1/2 matches now block the
73
+ existing completion record; Type-4 semantic equivalence is not promised.
74
+
75
+ Version `0.3.16` integrated duplication summaries into the single completion
76
+ receipt and every output surface while keeping all matches warning-only. Version
77
+ `0.3.17` keeps Type-3 warning-only but promotes calibrated Type-1/2 matches to
78
+ the completion gate. Active matches receive stable 24-character ids. The read-only
79
+ `duplication_audit` tool is disclosed only when unsuppressed matches exist and
80
+ can suppress one exact match with a reason code plus a bounded explanation;
81
+ wildcard/global suppression, credentials, and code-block reasons are rejected.
82
+ Suppression is an audit event, never a verification bypass. A repaired,
83
+ deleted, or below-threshold function emits a clear receipt so old warnings do
84
+ not persist. Older `0.3.15` receipts without match ids remain readable.
73
85
 
74
86
  ### P0: Continuous Integration And Release Reproducibility
75
87
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skein-code/cli",
3
- "version": "0.3.15",
3
+ "version": "0.3.17",
4
4
  "description": "A context-first, model-agnostic coding agent with an auditable terminal workspace.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -16,6 +16,12 @@
16
16
  },
17
17
  "skein": {
18
18
  "releaseNotes": [
19
+ "Calibrated Type-1/2 duplication matches now block completion until reuse or exact audited suppression",
20
+ "Type-3 duplication remains warning-only and Type-4 semantic equivalence remains explicitly unsupported",
21
+ "Duplication benchmark fixtures report deterministic recall, precision, false-positive rate, and latency",
22
+ "Duplication warnings now aggregate into the single completion receipt without changing verified status",
23
+ "Exact match ids support bounded, reason-coded suppression with audit and credential/code-block safeguards",
24
+ "Duplication audit tools are disclosed only when active warnings exist and repaired paths clear stale matches",
19
25
  "Warning-only TS/JS duplication audit compares new functions with the pre-write index generation",
20
26
  "Deterministic Type-1/2 and Type-3 receipts retain only hashes, locations, scores, and bounded counts",
21
27
  "Ordinary edits, renames, moves, deletions, small functions, tests, generated paths, and failed writes stay quiet",
@@ -51,6 +57,7 @@
51
57
  "pretest:pty": "npm run build",
52
58
  "test:pty": "sh test/pty/run-visual.sh",
53
59
  "benchmark:context": "tsx scripts/benchmark-local-index.ts",
60
+ "benchmark:duplication": "tsx scripts/benchmark-duplication.ts",
54
61
  "verify:package": "node scripts/verify-package.mjs",
55
62
  "release:verify": "npm run check && npm run verify:package --",
56
63
  "typecheck": "tsc --noEmit",