@skein-code/cli 0.3.14 → 0.3.15

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.
@@ -46,16 +46,22 @@
46
46
  8. Record a bounded, content-free token receipt for the model request and
47
47
  persist actual provider counters separately from local estimates.
48
48
  9. Continue until the model returns a final response or the turn limit is hit.
49
- 10. Run configured verification commands after changes. The completion gate accepts
49
+ 10. Before the first substantive write, run the warning-only repository reuse
50
+ gate. It binds current candidate/read evidence to the request, index
51
+ generation, and change sequence without retaining source text.
52
+ 11. Capture content-free TS/JS function fingerprints from that pre-write index
53
+ generation. After the write succeeds, compare only newly added or at least
54
+ 1.5x-expanded functions before refreshing changed index paths. Exact
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
57
+ equivalence is explicitly outside this deterministic contract.
58
+ 12. Run configured verification commands after changes. The completion gate accepts
50
59
  only current successful test, typecheck, lint, build, check, or `git diff
51
60
  --check` evidence recorded after the last mutation. An early final response
52
61
  receives one bounded recovery turn; the runtime persists `verified`,
53
62
  `unverified`, or `verification_failed` instead of trusting completion claims
54
63
  in model text.
55
- 10. Before the first substantive write, run the warning-only repository reuse
56
- gate. It binds current candidate/read evidence to the request, index
57
- generation, and change sequence without retaining source text.
58
- 11. Persist the outcome and expose the same status through the TUI, text, JSON,
64
+ 13. Persist the outcome and expose the same status through the TUI, text, JSON,
59
65
  and JSONL surfaces.
60
66
 
61
67
  ## Interactive startup gate
@@ -84,6 +90,14 @@ and atomically persists the new generation before returning the tool result.
84
90
  Manifest reconciliation additionally compares ctime, closing same-size changes
85
91
  whose mtime is restored without hashing every source file on an empty query.
86
92
 
93
+ The duplication baseline reuses the current local-index chunks and generation;
94
+ it does not add a persisted index schema or external parser service. The runtime
95
+ reconstructs hash-verified file content in memory, extracts ordinary TS/TSX/JS/
96
+ JSX/MJS/CJS functions, then retains only path, symbol, line range, token count,
97
+ exact hash, and winnowed hashes. The generation cache is cleared on load, full
98
+ build, targeted upsert, and deletion. Audit receipts never retain source,
99
+ normalized tokens, literal contents, prompts, or raw retrieval failures.
100
+
87
101
  ### Prompt layers
88
102
 
89
103
  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.14`.
12
+ - Current repository version: `0.3.15`.
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.14.tgz`. The verifier writes
45
- its SHA-256 to `artifacts/package/skein-code-cli-0.3.14.tgz.sha256`, and CI
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
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,19 +54,22 @@ 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 gate
58
-
59
- Version `0.3.14` adds the first runtime reuse slice. The prompt states a short
60
- repository-first ladder, while `src/agent/reuse-gate.ts` evaluates only the
61
- first substantive `write_file` or `apply_patch` addition. It flushes the local
62
- index, re-reads ranked candidates, and persists a bounded `ReuseReceipt` with
63
- hashed query metadata, paths, symbols, scores, read status, generation, and
64
- change sequence. The receipt never stores source or prompt text. This release
65
- is intentionally warning-only; an unavailable index is `unresolved`, not a
66
- false pass, and legitimate docs/config/test/generated/deletion/local-edit
67
- changes are exempt. The next slice is deterministic function extraction and
68
- post-write duplication audit; high-confidence blocking waits for fixture-based
69
- precision calibration.
57
+ ### P0-D: Warning-only repository reuse and duplication audit
58
+
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/
61
+ CJS functions. The audit captures a content-free baseline before mutation,
62
+ normalizes identifiers plus literals, uses exact hashes and 10-token
63
+ shingle/winnowing Jaccard matching, and runs before changed-path index refresh.
64
+ It audits only new or at least 1.5x-expanded functions; same-function edits,
65
+ renames, moves, deletions, small functions, tests, fixtures, generated/vendor/
66
+ dist/minified/declaration files, and failed writes stay quiet. Receipts expose
67
+ at most eight path/symbol/similarity matches through session, TUI, JSON, and
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.
70
73
 
71
74
  ### P0: Continuous Integration And Release Reproducibility
72
75
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skein-code/cli",
3
- "version": "0.3.14",
3
+ "version": "0.3.15",
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,9 @@
16
16
  },
17
17
  "skein": {
18
18
  "releaseNotes": [
19
+ "Warning-only TS/JS duplication audit compares new functions with the pre-write index generation",
20
+ "Deterministic Type-1/2 and Type-3 receipts retain only hashes, locations, scores, and bounded counts",
21
+ "Ordinary edits, renames, moves, deletions, small functions, tests, generated paths, and failed writes stay quiet",
19
22
  "Warning-only Reuse Gate records content-free candidate evidence before the first substantive write",
20
23
  "Reuse receipts surface unresolved index/read failures instead of claiming a safe new implementation",
21
24
  "Prompt and timeline diagnostics expose the repository-first reuse ladder without blocking legitimate writes",