@sunstack/cli 0.8.3 → 0.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 +25 -0
- package/README.md +62 -2
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.10.0
|
|
4
|
+
|
|
5
|
+
Release date: 2026-11-08.
|
|
6
|
+
|
|
7
|
+
- Default human lint output groups unsure results into one summary per rule,
|
|
8
|
+
showing the count and a saved-report readback example. Findings keep their
|
|
9
|
+
individual locations and messages. JSON, GitHub, SARIF, saved reports and
|
|
10
|
+
`lint show` retain every result; run status, counts and exit codes are unchanged.
|
|
11
|
+
|
|
12
|
+
## 0.9.0
|
|
13
|
+
|
|
14
|
+
Release date: 2026-11-07.
|
|
15
|
+
|
|
16
|
+
- `lint --prepare FILE` and `lint cases --prepare FILE` save exact model requests
|
|
17
|
+
and evidence without credentials or provider dispatch, with explicit gates and
|
|
18
|
+
unanswered selection dependencies, including composed-field/shared-projection
|
|
19
|
+
uncertainty. Clean preparation exits 6; failed admission and replayed selections
|
|
20
|
+
keep ordinary request-allowance semantics.
|
|
21
|
+
- Ordinary saved reports and JSON output retain selection requests and answers.
|
|
22
|
+
`--prepare --selections-from REPORT` continues from identical recorded selection
|
|
23
|
+
inputs with an exact resolved-model pin and explicit source provenance.
|
|
24
|
+
- `lint show` reads prepared requests, saved selections and prepared case ordinals
|
|
25
|
+
using only the saved report. Existing ordinary human output and result ids stay
|
|
26
|
+
unchanged.
|
|
27
|
+
|
|
3
28
|
## 0.8.3
|
|
4
29
|
|
|
5
30
|
Release date: 2026-11-07.
|
package/README.md
CHANGED
|
@@ -105,8 +105,10 @@ logical report order. Each entry has the rule's `name` and marker, the piece's
|
|
|
105
105
|
file and first and last line, its outcome (`pass`, `finding`, `not_applicable`,
|
|
106
106
|
`uncertain` or `incomplete`) and its ending `step` (null before any step ran).
|
|
107
107
|
|
|
108
|
-
Default output prints short numbered lines and
|
|
109
|
-
|
|
108
|
+
Default output prints findings as short numbered lines and groups unsure results
|
|
109
|
+
into one count per rule, with a `lint show` example using that rule's first unsure
|
|
110
|
+
id. The full list, ending steps, sent state and answers remain in JSON and saved
|
|
111
|
+
reports. To inspect a result later, save the full report and request one id:
|
|
110
112
|
|
|
111
113
|
```sh
|
|
112
114
|
sunstack lint --all --report run.json
|
|
@@ -120,6 +122,64 @@ and rule files. It retains raw piece evidence for mechanical steps. `lint show`
|
|
|
120
122
|
needs only that saved file; an excluded rule is marked as never asked and cannot
|
|
121
123
|
be re-walked. Unknown ids return an error with the valid range.
|
|
122
124
|
|
|
125
|
+
### Prepare requests without sending
|
|
126
|
+
|
|
127
|
+
```sh
|
|
128
|
+
sunstack lint --all --prepare prepared.json
|
|
129
|
+
sunstack lint show prepared.json 3
|
|
130
|
+
sunstack lint cases cases.json --set development --prepare prepared-cases.json
|
|
131
|
+
sunstack lint show prepared-cases.json 1
|
|
132
|
+
sunstack lint --all --prepare continued.json --selections-from run.json
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
`--prepare FILE` uses ordinary target selection, evidence, cuts, mechanical checks,
|
|
136
|
+
request builders and budgets, then saves the requests without resolving a
|
|
137
|
+
credential or sending to the provider. It conflicts with `--report`, `--check`,
|
|
138
|
+
`--rules`, `--evidence` and `--init`. The report adds `mode: "prepare"`; each
|
|
139
|
+
unanswered request has `status: "prepared"`, its exact `request.state` and
|
|
140
|
+
`request.questions`, raw evidence, and the config and rule file contents/hashes.
|
|
141
|
+
There are no invented answers or judged outcomes. Filter-gated rule requests are
|
|
142
|
+
offered for every mechanically possible folder with their `gate` condition.
|
|
143
|
+
Decision-tree routes use one request containing all piece questions, so an
|
|
144
|
+
unanswered route does not block preparation.
|
|
145
|
+
|
|
146
|
+
A selected kind's unanswered selection prevents its dependent pieces from being
|
|
147
|
+
built. `needs_answer` lists each affected kind/file and the selection request id
|
|
148
|
+
it waits on; independent evidence still builds. Composed `same_file`, `inside`
|
|
149
|
+
and `enclosing` fields remain selection-pending, including remainder subtraction.
|
|
150
|
+
If any field in the model view is selection-pending, the whole model request
|
|
151
|
+
waits, including questions that read only another field. No size estimate is
|
|
152
|
+
used. Requests whose model view has no pending field continue normally.
|
|
153
|
+
Ordinary `--report` and JSON
|
|
154
|
+
output now retain selection requests, answers, requested/resolved models, input
|
|
155
|
+
hashes and raw selection evidence, alongside their existing rule/filter entries.
|
|
156
|
+
|
|
157
|
+
Use `--selections-from` only with `--prepare` to continue from those recorded
|
|
158
|
+
answers. It accepts a lint report or a case report. Replay requires the identical
|
|
159
|
+
state and questions, a valid recorded answer, and **decision_model.model equal to the
|
|
160
|
+
recorded resolved model name exactly**. Pin the resolved version in the config;
|
|
161
|
+
an alias such as `jev-latest`, a different version, an unanswered entry or changed
|
|
162
|
+
input stays `needs_answer`. No provider-prefix inference or revision restriction
|
|
163
|
+
is applied. Applied entries have `status: "from_report"` and
|
|
164
|
+
`source_request_id`; a case-report source also records `source_revision`.
|
|
165
|
+
Agreeing duplicate answers retain the first source's provenance; conflicting
|
|
166
|
+
answers stay unresolved. Replayed selectors check and consume the same logical
|
|
167
|
+
request allowance as ordinary selection, so downstream requests keep the same
|
|
168
|
+
limit. Neither preparing nor replaying sends inference or consumes model usage.
|
|
169
|
+
|
|
170
|
+
Prepared case reports keep the ordinary exact-range/hash matching and accounting,
|
|
171
|
+
adding the `prepared` disposition. Stale, unmatched, ambiguous, mechanically
|
|
172
|
+
excluded and unavailable cases retain explicit reasons. `lint show` on a prepared
|
|
173
|
+
case report selects the **1-based ordinal in its cases array**, and returns that
|
|
174
|
+
case plus its linked revision/request evidence; stale and unmatched cases are
|
|
175
|
+
reason-only. Readback needs only the saved file.
|
|
176
|
+
|
|
177
|
+
A clean prepare-only run exits **6**, including runs waiting for selection answers.
|
|
178
|
+
Mechanical findings or case gaps (including stale/unmatched cases) exit **1**;
|
|
179
|
+
invalid input exits **2**, incomplete processing **3**, and cancellation **4**.
|
|
180
|
+
Invalid, cancelled and incomplete processing take precedence over case gaps.
|
|
181
|
+
Unassessed case bars alone do not fail a prepare-only run.
|
|
182
|
+
|
|
123
183
|
A case file contains `cases` and `bars`, plus an optional local `repository`
|
|
124
184
|
path (relative to the case file). Each case has a unique `id`, `revision`, `set`
|
|
125
185
|
and `label_from` (`owner-fix`, `owner-ruling` or `blind-agents`).
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"hasInstallScript": true,
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"name": "@sunstack/cli",
|
|
22
|
-
"version": "0.
|
|
22
|
+
"version": "0.10.0"
|
|
23
23
|
},
|
|
24
24
|
"node_modules/detect-libc": {
|
|
25
25
|
"engines": {
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
"requires": true,
|
|
51
|
-
"version": "0.
|
|
51
|
+
"version": "0.10.0"
|
|
52
52
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"artifactDownloadUrls": [
|
|
3
|
-
"https://github.com/ShravanSunder/sunstack-tools/releases/download/v0.
|
|
3
|
+
"https://github.com/ShravanSunder/sunstack-tools/releases/download/v0.10.0"
|
|
4
4
|
],
|
|
5
5
|
"bin": {
|
|
6
6
|
"sunstack": "run-sunstack.js"
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"zipExt": ".tar.gz"
|
|
89
89
|
}
|
|
90
90
|
},
|
|
91
|
-
"version": "0.
|
|
91
|
+
"version": "0.10.0",
|
|
92
92
|
"volta": {
|
|
93
93
|
"node": "18.14.1",
|
|
94
94
|
"npm": "9.5.0"
|