@skein-code/cli 0.3.14 → 0.3.16
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/README.md +7 -4
- package/dist/cli.js +950 -211
- package/dist/cli.js.map +1 -1
- package/docs/ARCHITECTURE.md +29 -5
- package/docs/NEXT_STEPS.md +29 -16
- package/package.json +7 -1
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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,24 @@ 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
|
+
|
|
101
|
+
Duplication findings are folded into the existing completion record rather than
|
|
102
|
+
creating a parallel completion state. The enforcement is explicitly
|
|
103
|
+
warning-only until fixture benchmarks establish the required precision. Active
|
|
104
|
+
matches receive stable, bounded ids; the optional `duplication_audit` read tool
|
|
105
|
+
is exposed only while unsuppressed findings exist. Suppression is exact-match,
|
|
106
|
+
reason-coded, and persisted as a content-free audit receipt. Repaired/deleted/
|
|
107
|
+
small functions produce a `clear` receipt for paths that previously carried an
|
|
108
|
+
active finding, so the summary cannot retain stale warnings. Legacy receipts
|
|
109
|
+
without ids remain readable and are never suppressible.
|
|
110
|
+
|
|
87
111
|
### Prompt layers
|
|
88
112
|
|
|
89
113
|
The runner keeps the cacheable system prefix separate from mutable task state:
|
package/docs/NEXT_STEPS.md
CHANGED
|
@@ -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.
|
|
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.
|
|
45
|
-
its SHA-256 to `artifacts/package/skein-code-cli-0.3.
|
|
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,19 +54,32 @@ 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
|
|
58
|
-
|
|
59
|
-
Version `0.3.14`
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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` added 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.
|
|
73
|
+
|
|
74
|
+
Version `0.3.16` keeps the same warning-only enforcement while integrating
|
|
75
|
+
duplication summaries into the single completion receipt and every output
|
|
76
|
+
surface. Active matches receive stable 24-character ids. The read-only
|
|
77
|
+
`duplication_audit` tool is disclosed only when unsuppressed matches exist and
|
|
78
|
+
can suppress one exact match with a reason code plus a bounded explanation;
|
|
79
|
+
wildcard/global suppression, credentials, and code-block reasons are rejected.
|
|
80
|
+
Suppression is an audit event, never a verification bypass. A repaired,
|
|
81
|
+
deleted, or below-threshold function emits a clear receipt so old warnings do
|
|
82
|
+
not persist. Older `0.3.15` receipts without match ids remain readable.
|
|
70
83
|
|
|
71
84
|
### P0: Continuous Integration And Release Reproducibility
|
|
72
85
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skein-code/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.16",
|
|
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
|
+
"Duplication warnings now aggregate into the single completion receipt without changing verified status",
|
|
20
|
+
"Exact match ids support bounded, reason-coded suppression with audit and credential/code-block safeguards",
|
|
21
|
+
"Duplication audit tools are disclosed only when active warnings exist and repaired paths clear stale matches",
|
|
22
|
+
"Warning-only TS/JS duplication audit compares new functions with the pre-write index generation",
|
|
23
|
+
"Deterministic Type-1/2 and Type-3 receipts retain only hashes, locations, scores, and bounded counts",
|
|
24
|
+
"Ordinary edits, renames, moves, deletions, small functions, tests, generated paths, and failed writes stay quiet",
|
|
19
25
|
"Warning-only Reuse Gate records content-free candidate evidence before the first substantive write",
|
|
20
26
|
"Reuse receipts surface unresolved index/read failures instead of claiming a safe new implementation",
|
|
21
27
|
"Prompt and timeline diagnostics expose the repository-first reuse ladder without blocking legitimate writes",
|