@redue/cli 0.0.0-stage → 0.1.0-alpha.11
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 +181 -0
- package/LICENSE +180 -0
- package/README.md +162 -2
- package/bin/redue.mjs +371 -0
- package/bin/vstate.mjs +3 -0
- package/docs/README.md +21 -0
- package/docs/user/agents.md +253 -0
- package/docs/user/configuration.md +60 -0
- package/docs/user/direct-typescript.md +114 -0
- package/docs/user/getting-started.md +148 -0
- package/docs/user/json.md +59 -0
- package/docs/user/npm-launcher-notice.md +42 -0
- package/docs/user/pilot.md +145 -0
- package/docs/user/receipt-selection-notice.md +60 -0
- package/docs/user/shell.md +25 -0
- package/docs/user/supported-projects.md +90 -0
- package/examples/redue.config.json +8 -0
- package/package.json +47 -4
- package/src/agent-integration.mjs +294 -0
- package/src/agent-policy.md +70 -0
- package/src/cached-state.mjs +42 -0
- package/src/claude-hook.mjs +115 -0
- package/src/cli.mjs +499 -0
- package/src/control-endpoint.mjs +11 -0
- package/src/daemon.mjs +1236 -0
- package/src/decision-profile.mjs +32 -0
- package/src/decision-validation.mjs +51 -0
- package/src/declared-plan.mjs +125 -0
- package/src/direct-run-certificate.mjs +185 -0
- package/src/direct-typescript-probe.mjs +22 -0
- package/src/direct-typescript.mjs +109 -0
- package/src/executable-lookup.mjs +18 -0
- package/src/glob.mjs +9 -0
- package/src/history-worker.mjs +26 -0
- package/src/index.mjs +306 -0
- package/src/installed-inputs.mjs +110 -0
- package/src/linux-inotify.py +228 -0
- package/src/linux-observer.mjs +79 -0
- package/src/node-onboarding.mjs +274 -0
- package/src/npm-typecheck-environment.mjs +36 -0
- package/src/npm-typecheck-probe.mjs +120 -0
- package/src/observation.mjs +59 -0
- package/src/owned-state.mjs +32 -0
- package/src/path-identity.mjs +43 -0
- package/src/plan-worker.mjs +140 -0
- package/src/plan.mjs +10 -0
- package/src/platform-observation.mjs +17 -0
- package/src/platform-state.mjs +14 -0
- package/src/pnpm-inputs.mjs +355 -0
- package/src/pnpm-typecheck-probe.mjs +47 -0
- package/src/presentation.mjs +53 -0
- package/src/probe-result.mjs +25 -0
- package/src/process-liveness.mjs +11 -0
- package/src/project-location.mjs +34 -0
- package/src/run-lock.mjs +77 -0
- package/src/run-recorder.cjs +78 -0
- package/src/state-store.mjs +73 -0
- package/src/toolchain-probe.mjs +21 -0
- package/src/typescript-contract-probe.mjs +5 -0
- package/src/typescript-input-facts.mjs +68 -0
- package/src/typescript-list.mjs +141 -0
- package/src/typescript-qualification.mjs +77 -0
- package/src/windows-command.mjs +16 -0
- package/src/windows-process.mjs +15 -0
- package/src/yarn-workspace-inputs.mjs +148 -0
- package/src/yarn-workspace-typecheck-probe.mjs +107 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0-alpha.11 — 2026-10-18
|
|
4
|
+
|
|
5
|
+
Bench numbers below are from one 800-file project on macOS arm64, Node 22.13.0.
|
|
6
|
+
Released alpha.10 and this build ran back to back on the same machine.
|
|
7
|
+
|
|
8
|
+
- Faster status decisions for the direct TypeScript recipe on macOS and Linux.
|
|
9
|
+
The observer checks the compiler's recorded filesystem questions in-process
|
|
10
|
+
instead of starting a probe that rebuilds the whole program. A full probe runs
|
|
11
|
+
only when that check fails, the plan or toolchain changes, or observation was
|
|
12
|
+
interrupted. While idle it no longer starts any probe process.
|
|
13
|
+
- warm `status --sync`: 741 → 194 ms (+683 → +154 ms over cached `status`)
|
|
14
|
+
- `status --sync` after an unrelated edit: 619 → 219 ms
|
|
15
|
+
- `status --sync` after a relevant edit: 1472 → 321 ms. It answers STALE without
|
|
16
|
+
a full probe when the edited inputs already differ from the receipt.
|
|
17
|
+
- probe processes started in 20 s idle: 4 → 0
|
|
18
|
+
- Cheaper `redue run` on macOS and Linux. The compiler records its own inputs
|
|
19
|
+
while it runs, so REDUE no longer probes before and after the compile. After
|
|
20
|
+
a relevant edit, the run builds the new certificate from that recording instead
|
|
21
|
+
of running a full probe. Output and exit code are those of plain `tsc`.
|
|
22
|
+
- repeat run: 4143 → 2752 ms, overhead over plain `tsc` 72% → 16%
|
|
23
|
+
- run right after a relevant edit: 3990 → 2802 ms, overhead 65% → 18%
|
|
24
|
+
- The direct TypeScript recipe accepts inert Node settings. Before, any non-empty
|
|
25
|
+
`NODE_*` setting other than `NODE_ENV` kept a check from becoming CURRENT.
|
|
26
|
+
Now accepted: `NODE_EXTRA_CA_CERTS`, `NODE_PATH`, and `NODE_OPTIONS` made only of
|
|
27
|
+
`--max-old-space-size`, `--max-semi-space-size`, `--use-openssl-ca`,
|
|
28
|
+
`--use-bundled-ca`, `--use-system-ca` and `--dns-result-order`. A run under one
|
|
29
|
+
value is not reused under another. See [Node settings](docs/user/direct-typescript.md#node-settings).
|
|
30
|
+
- `redue agent setup claude --apply` adds a Claude Code hook to
|
|
31
|
+
`.claude/settings.local.json`. When the agent reruns a configured typecheck
|
|
32
|
+
that is CURRENT and PASS, the hook blocks it and names the passing run. When
|
|
33
|
+
the check is not CURRENT, it rewrites the command to `redue run CHECK`, so the
|
|
34
|
+
result is recorded and the next identical command can be skipped. Prefix a
|
|
35
|
+
command with `REDUE_FORCE=1` to always run it. On the bench: a skip decision
|
|
36
|
+
takes about 155 ms; a forced command adds 39 ms. Tested live with Claude Code
|
|
37
|
+
2.1.302 (`claude -p`). See [the hook](docs/user/agents.md#claude-code-typecheck-hook).
|
|
38
|
+
- Unstable-run and observation-gap reasons now name the failed check or operation.
|
|
39
|
+
- macOS counts each input event once, which removes an intermittent UNVERIFIED
|
|
40
|
+
after an edit.
|
|
41
|
+
|
|
42
|
+
Known limits:
|
|
43
|
+
|
|
44
|
+
- Two bench targets are still missed: warm sync adds 154 ms over cached status
|
|
45
|
+
(target < 100 ms), and `redue run` adds 16–18% over plain `tsc` (target < 10%).
|
|
46
|
+
- An edit that changes imports, configuration or lib files still costs one full
|
|
47
|
+
probe, at the end of the next run.
|
|
48
|
+
- Windows keeps the earlier probe-based path, except the STALE shortcut. Yarn
|
|
49
|
+
and pnpm recipes still probe on each decision. The bench was not run on Linux.
|
|
50
|
+
- The Claude hook covers the Bash tool only, from the project root. It allows the
|
|
51
|
+
rewritten command without a permission prompt. It judges its own environment,
|
|
52
|
+
not variables the Bash tool adds from your shell profile.
|
|
53
|
+
- To upgrade, stop observers, install into the same prefix, and keep config, state
|
|
54
|
+
and receipts. Rerun `redue agent setup claude --apply` to add the hook.
|
|
55
|
+
|
|
56
|
+
## 0.1.0-alpha.10 — 2026-10-10
|
|
57
|
+
|
|
58
|
+
- Combine guarded caller-discovery reuse and cheaper non-reusable recording on
|
|
59
|
+
the existing macOS direct-TypeScript path. Healthy runs still validate both
|
|
60
|
+
boundaries in the caller context, falling back to full probes when necessary.
|
|
61
|
+
- Once a healthy start observation is missing, omit qualification-only work that
|
|
62
|
+
cannot repair it. Execute the configured compiler and durably record its true
|
|
63
|
+
outcome; later observer recovery cannot make that invocation reusable.
|
|
64
|
+
- Refuse missing, malformed or mismatched state ownership before execution.
|
|
65
|
+
Preserve cancellation, immutable history and newest-receipt selection.
|
|
66
|
+
- Three fixed A–H cycles cost 15.16/15.35/15.82 seconds versus matched ordinary
|
|
67
|
+
compiler totals of 16.69/16.66/16.56 seconds. These modest CLI savings do not
|
|
68
|
+
establish real-world reuse frequency, CPU/memory or whole-agent benefit.
|
|
69
|
+
- Provide a [fixed-build opt-in pilot guide](docs/user/pilot.md). External usage
|
|
70
|
+
has not started. No compiler/platform expansion or policy redesign is included;
|
|
71
|
+
Claude behavior and cross-host handoff remain untested.
|
|
72
|
+
- Stop observers before upgrading in the same prefix, preserve config/state and
|
|
73
|
+
receipts, preview/apply project-local policy updates, then restart and reassess.
|
|
74
|
+
Never silently migrate a check. Alpha.9 remains an unshipped candidate.
|
|
75
|
+
|
|
76
|
+
## 0.1.0-alpha.9 — unshipped candidate (2026-10-09)
|
|
77
|
+
|
|
78
|
+
- Reduce repeated caller discovery on the guarded macOS direct-TypeScript path.
|
|
79
|
+
Both execution boundaries still validate in the actual caller environment,
|
|
80
|
+
with full-probe fallback when a discovery certificate cannot be used.
|
|
81
|
+
- Preserve required content/membership, compiler/context, observation and durable
|
|
82
|
+
receipt-selection guards. The configured compiler still executes on every run.
|
|
83
|
+
- Recording overhead fell in the measured debugger-project sample, but every
|
|
84
|
+
complete A–H candidate cycle remained slower than eight ordinary compiler runs.
|
|
85
|
+
No net workflow saving, broader support or CPU/memory improvement is claimed.
|
|
86
|
+
- Stop observers before upgrading in the existing prefix, retain config/state
|
|
87
|
+
and receipts, then restart. No automatic migration is performed.
|
|
88
|
+
|
|
89
|
+
## 0.1.0-alpha.8 — 2026-10-08
|
|
90
|
+
|
|
91
|
+
- Consume compiler-certificate input asynchronously while preserving the input-size
|
|
92
|
+
limit, parent deadline, complete-input validation and conservative fallbacks.
|
|
93
|
+
- Support the exact reviewed TypeScript 5.5.2 distribution in the explicitly selected
|
|
94
|
+
single-package npm direct-compiler recipe. Enforce implementation membership and
|
|
95
|
+
reject ETW module overrides before compiler API loading.
|
|
96
|
+
- Real independent Codex/macOS sessions reused compiler evidence on the pinned
|
|
97
|
+
vscode-js-debug project. Cross-platform CLI/package acceptance is separate;
|
|
98
|
+
Claude behavior and cross-host handoff remain untested.
|
|
99
|
+
- The measured eight-case workflow avoided four compiler executions but cost
|
|
100
|
+
20.01 seconds versus 16.97 seconds for eight ordinary compiler runs. No net
|
|
101
|
+
workflow or whole-agent speedup is claimed. This verifies compiler inputs only,
|
|
102
|
+
not npm lifecycle behavior or application correctness.
|
|
103
|
+
- Stop observers before upgrading, retain the same configuration/state, then
|
|
104
|
+
restart. Do not delete receipts or automatically convert existing checks.
|
|
105
|
+
|
|
106
|
+
## 0.1.0-alpha.7 — 2026-10-07
|
|
107
|
+
|
|
108
|
+
- Guide explicitly configured direct-compiler reuse through one caller-aware
|
|
109
|
+
synchronized query; skip reuse queries when fresh execution is already required.
|
|
110
|
+
- Update intact project-local agent instructions safely; installation alone does
|
|
111
|
+
not update them. See the [existing-user procedure](docs/user/agents.md#update-an-existing-connection).
|
|
112
|
+
- In the finite Codex/macOS comparison, revised guidance reached eligible evidence
|
|
113
|
+
and reused it in 4/4 opportunities versus 1/4; verification tool calls fell
|
|
114
|
+
from 28 to 14. Evidence semantics are unchanged. No universal compliance,
|
|
115
|
+
tail-latency or causal agent-task speedup is claimed. Claude behavior and
|
|
116
|
+
cross-host handoff remain untested.
|
|
117
|
+
|
|
118
|
+
## 0.1.0-alpha.6 — 2026-10-07
|
|
119
|
+
|
|
120
|
+
- Reuse guarded compiler discovery for warm direct-TypeScript decisions on macOS
|
|
121
|
+
with healthy historical observation. Membership, absence, compiler bytes,
|
|
122
|
+
caller context and receipt selection remain validated independently.
|
|
123
|
+
- Keep full discovery/reconciliation fallbacks and existing platform boundaries.
|
|
124
|
+
- On one measured project, complete warm decision median fell from roughly
|
|
125
|
+
791 to 474 ms. This is not a universal speedup, agent-task acceleration,
|
|
126
|
+
memory improvement, or a faster relevant-edit/rebuild claim.
|
|
127
|
+
- Stop observers before upgrading and restart with the same config/state.
|
|
128
|
+
Preserve receipts; no configuration migration is performed.
|
|
129
|
+
|
|
130
|
+
## 0.1.0-alpha.5 — 2026-10-07
|
|
131
|
+
|
|
132
|
+
- Add opt-in project-local agent activation and direct TypeScript evidence, with
|
|
133
|
+
fresh-session reuse demonstrated in the tested Codex/macOS configuration.
|
|
134
|
+
- Preserve ordinary npm execution as a separate, recording-only obligation.
|
|
135
|
+
Direct compilation requires explicit selection and a fresh baseline receipt.
|
|
136
|
+
- Initial direct recipe supports reviewed TypeScript 5.6.3/5.9.3 in single-package
|
|
137
|
+
npm projects, with documented Node/environment restrictions.
|
|
138
|
+
- Claude integration mechanics are tested; Claude behavior and cross-host reuse
|
|
139
|
+
remain untested. No universal compliance or inexpensive-check speedup is claimed.
|
|
140
|
+
|
|
141
|
+
## 0.1.0-alpha.4 — 2026-10-07
|
|
142
|
+
|
|
143
|
+
- Withdraw automatic npm-launcher applicability because update notifications consume
|
|
144
|
+
unobserved remote/cache/time state. Npm scripts still run and record outcomes.
|
|
145
|
+
- Preserve historical PASS/FAIL and require stop/start when upgrading an observer.
|
|
146
|
+
Do not delete receipts. See the [maintainer notice](docs/user/npm-launcher-notice.md).
|
|
147
|
+
- Supported Yarn/pnpm and explicit reviewed contracts are unchanged. No agent
|
|
148
|
+
activation or npm direct-compiler recipe is included in this correction.
|
|
149
|
+
|
|
150
|
+
## 0.1.0-alpha.3 — 2026-10-06
|
|
151
|
+
|
|
152
|
+
Install: `npm install --global @redue/cli@alpha`.
|
|
153
|
+
|
|
154
|
+
- Fix selected execution outcomes remaining hidden behind an older observer/cache
|
|
155
|
+
after a missed reload notification. A newer failure must not leave an older
|
|
156
|
+
passing receipt eligible for reuse.
|
|
157
|
+
- Withhold applicability during incomplete receipt persistence, unreadable or
|
|
158
|
+
changing selection, and client connections to an older observer.
|
|
159
|
+
- Preserve immutable run history. Upgrade requires an observer stop/start;
|
|
160
|
+
receipts need not be deleted. See the [maintainer notice](docs/user/receipt-selection-notice.md).
|
|
161
|
+
|
|
162
|
+
## 0.1.0-alpha.2 — 2026-10-06
|
|
163
|
+
|
|
164
|
+
Install: `npm install --global @redue/cli@alpha`.
|
|
165
|
+
|
|
166
|
+
- npm distribution moved to the product-owned `@redue/cli` package.
|
|
167
|
+
- The executable remains `redue`; verification semantics and runtime code are unchanged.
|
|
168
|
+
- Alpha.1 (`@msiric/redue`) remains available but is superseded by the canonical package.
|
|
169
|
+
|
|
170
|
+
## 0.1.0-alpha.1 — 2026-10-06
|
|
171
|
+
|
|
172
|
+
Install: `npm install --global @msiric/redue@alpha`. The command remains `redue`.
|
|
173
|
+
|
|
174
|
+
- Persistent execution evidence with independent CURRENT, STALE, and UNVERIFIED applicability.
|
|
175
|
+
- Node/TypeScript onboarding for npm, supported Yarn node-modules workspaces, and pnpm 12 isolated/hoisted layouts.
|
|
176
|
+
- macOS, Linux, and Windows observation with conservative deterministic recovery.
|
|
177
|
+
- Human status/explain output, JSON integration contract, and recording-only checks.
|
|
178
|
+
- Standard npm tarball installation and scoped state cleanup.
|
|
179
|
+
|
|
180
|
+
Known limitations include incomplete test/lint/build contracts, uncaptured direct
|
|
181
|
+
commands, and synchronized decisions that can cost more than cheap checks. See README.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
15
|
+
other entities that control, are controlled by, or are under common
|
|
16
|
+
control with that entity. For the purposes of this definition,
|
|
17
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
18
|
+
direction or management of such entity, whether by contract or
|
|
19
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
20
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
21
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
22
|
+
exercising permissions granted by this License.
|
|
23
|
+
|
|
24
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
25
|
+
including but not limited to software source code, documentation
|
|
26
|
+
source, and configuration files.
|
|
27
|
+
"Object" form shall mean any form resulting from mechanical
|
|
28
|
+
transformation or translation of a Source form, including but
|
|
29
|
+
not limited to compiled object code, generated documentation,
|
|
30
|
+
and conversions to other media types.
|
|
31
|
+
|
|
32
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
33
|
+
Object form, made available under the License, as indicated by a
|
|
34
|
+
copyright notice that is included in or attached to the work
|
|
35
|
+
(an example is provided in the Appendix below).
|
|
36
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
37
|
+
form, that is based on (or derived from) the Work and for which the
|
|
38
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
39
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
40
|
+
of this License, Derivative Works shall not include works that remain
|
|
41
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
42
|
+
the Work and Derivative Works thereof.
|
|
43
|
+
"Contribution" shall mean any work of authorship, including
|
|
44
|
+
the original version of the Work and any modifications or additions
|
|
45
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
46
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
47
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
48
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
49
|
+
means any form of electronic, verbal, or written communication sent
|
|
50
|
+
to the Licensor or its representatives, including but not limited to
|
|
51
|
+
communication on electronic mailing lists, source code control systems,
|
|
52
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
53
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
54
|
+
excluding communication that is conspicuously marked or otherwise
|
|
55
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
56
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
57
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
58
|
+
subsequently incorporated within the Work.
|
|
59
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
60
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
61
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
62
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
63
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
64
|
+
Work and such Derivative Works in Source or Object form.
|
|
65
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
66
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
67
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
68
|
+
(except as stated in this section) patent license to make, have made,
|
|
69
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
70
|
+
where such license applies only to those patent claims licensable
|
|
71
|
+
by such Contributor that are necessarily infringed by their
|
|
72
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
73
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
74
|
+
institute patent litigation against any entity (including a
|
|
75
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
76
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
77
|
+
or contributory patent infringement, then any patent licenses
|
|
78
|
+
granted to You under this License for that Work shall terminate
|
|
79
|
+
as of the date such litigation is filed.
|
|
80
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
81
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
82
|
+
modifications, and in Source or Object form, provided that You
|
|
83
|
+
meet the following conditions:
|
|
84
|
+
|
|
85
|
+
(a) You must give any other recipients of the Work or
|
|
86
|
+
Derivative Works a copy of this License; and
|
|
87
|
+
|
|
88
|
+
(b) You must cause any modified files to carry prominent notices
|
|
89
|
+
stating that You changed the files; and
|
|
90
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
91
|
+
that You distribute, all copyright, patent, trademark, and
|
|
92
|
+
attribution notices from the Source form of the Work,
|
|
93
|
+
excluding those notices that do not pertain to any part of
|
|
94
|
+
the Derivative Works; and
|
|
95
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
96
|
+
distribution, then any Derivative Works that You distribute must
|
|
97
|
+
include a readable copy of the attribution notices contained
|
|
98
|
+
within such NOTICE file, excluding those notices that do not
|
|
99
|
+
pertain to any part of the Derivative Works, in at least one
|
|
100
|
+
of the following places: within a NOTICE text file distributed
|
|
101
|
+
as part of the Derivative Works; within the Source form or
|
|
102
|
+
documentation, if provided along with the Derivative Works; or,
|
|
103
|
+
within a display generated by the Derivative Works, if and
|
|
104
|
+
wherever such third-party notices normally appear. The contents
|
|
105
|
+
of the NOTICE file are for informational purposes only and
|
|
106
|
+
do not modify the License. You may add Your own attribution
|
|
107
|
+
notices within Derivative Works that You distribute, alongside
|
|
108
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
109
|
+
that such additional attribution notices cannot be construed
|
|
110
|
+
as modifying the License.
|
|
111
|
+
You may add Your own copyright statement to Your modifications and
|
|
112
|
+
may provide additional or different license terms and conditions
|
|
113
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
114
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
115
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
116
|
+
the conditions stated in this License.
|
|
117
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
118
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
119
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
120
|
+
this License, without any additional terms or conditions.
|
|
121
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
122
|
+
the terms of any separate license agreement you may have executed
|
|
123
|
+
with Licensor regarding such Contributions.
|
|
124
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
125
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
126
|
+
except as required for reasonable and customary use in describing the
|
|
127
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
128
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
129
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
130
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
131
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
132
|
+
implied, including, without limitation, any warranties or conditions
|
|
133
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
134
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
135
|
+
appropriateness of using or redistributing the Work and assume any
|
|
136
|
+
risks associated with Your exercise of permissions under this License.
|
|
137
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
138
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
139
|
+
unless required by applicable law (such as deliberate and grossly
|
|
140
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
141
|
+
liable to You for damages, including any direct, indirect, special,
|
|
142
|
+
incidental, or consequential damages of any character arising as a
|
|
143
|
+
result of this License or out of the use or inability to use the
|
|
144
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
145
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
146
|
+
other commercial damages or losses), even if such Contributor
|
|
147
|
+
has been advised of the possibility of such damages.
|
|
148
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
149
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
150
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
151
|
+
or other liability obligations and/or rights consistent with this
|
|
152
|
+
License. However, in accepting such obligations, You may act only
|
|
153
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
154
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
155
|
+
defend, and hold each Contributor harmless for any liability
|
|
156
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
157
|
+
of your accepting any such warranty or additional liability.
|
|
158
|
+
END OF TERMS AND CONDITIONS
|
|
159
|
+
|
|
160
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
161
|
+
To apply the Apache License to your work, attach the following
|
|
162
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
163
|
+
replaced with your own identifying information. (Don't include
|
|
164
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
165
|
+
comment syntax for the file format. We also recommend that a
|
|
166
|
+
file or class name and description of purpose be included on the
|
|
167
|
+
same "printed page" as the copyright notice for easier
|
|
168
|
+
identification within third-party archives.
|
|
169
|
+
Copyright [yyyy] [name of copyright owner]
|
|
170
|
+
|
|
171
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
172
|
+
you may not use this file except in compliance with the License.
|
|
173
|
+
You may obtain a copy of the License at
|
|
174
|
+
|
|
175
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
176
|
+
Unless required by applicable law or agreed to in writing, software
|
|
177
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
178
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
179
|
+
See the License for the specific language governing permissions and
|
|
180
|
+
limitations under the License.
|
package/README.md
CHANGED
|
@@ -1,3 +1,163 @@
|
|
|
1
|
-
#
|
|
1
|
+
# REDUE
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Maintainer notice: alpha.4 withdraws automatic npm-launcher applicability.
|
|
4
|
+
Npm commands still execute and record historical outcomes, but remain UNVERIFIED.
|
|
5
|
+
[Why this changed and how to upgrade without deleting receipts](docs/user/npm-launcher-notice.md).
|
|
6
|
+
Alpha.2 users should also review the [receipt correction](docs/user/receipt-selection-notice.md).
|
|
7
|
+
|
|
8
|
+
**Know what still holds. Redo what's due.**
|
|
9
|
+
|
|
10
|
+
You ran the checks. Then the code changed—or a new coding agent started with no
|
|
11
|
+
conversation history. Which results can you still use?
|
|
12
|
+
|
|
13
|
+
REDUE keeps persistent verification state for your codebase so developers and
|
|
14
|
+
coding agents can see which previous checks still apply to the code they have now.
|
|
15
|
+
It records evidence, not proofs of correctness.
|
|
16
|
+
|
|
17
|
+
For a qualified direct-compiler or supported Yarn/pnpm check (ordinary npm scripts are recording-only):
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
$ redue status --sync
|
|
21
|
+
✓ typecheck CURRENT / PASS
|
|
22
|
+
? test UNVERIFIED / PASS
|
|
23
|
+
Recording-only: test runtime, transforms and cache inputs need review
|
|
24
|
+
|
|
25
|
+
# Later, after a relevant edit:
|
|
26
|
+
$ redue explain typecheck
|
|
27
|
+
typecheck: STALE / PASS
|
|
28
|
+
src/main.ts changed
|
|
29
|
+
Relevant inputs changed:
|
|
30
|
+
src/main.ts
|
|
31
|
+
Due again when verification is needed: redue run "typecheck"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Agent A verifies and exits. Agent B starts fresh. The receipt is still there;
|
|
35
|
+
REDUE checks whether it still applies. Unrelated documentation edits can preserve
|
|
36
|
+
it; relevant source edits make it stale. [Run the reproducible demo](docs/contributor/demo.md).
|
|
37
|
+
|
|
38
|
+
## Install the alpha
|
|
39
|
+
|
|
40
|
+
The opt-in pilot uses **0.1.0-alpha.11**. Follow the
|
|
41
|
+
[fixed-version pilot guide](docs/user/pilot.md) for supported projects, setup,
|
|
42
|
+
updates and voluntary feedback. No external usage results are claimed yet.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
REDUE is published on npm as `@redue/cli`. The installed command is `redue`.
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
npm install --global @redue/cli@alpha
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
To test a source candidate, run `npm ci` and `npm pack --json`, then install the
|
|
52
|
+
reported tarball filename with `npm install --global ./<filename>`.
|
|
53
|
+
|
|
54
|
+
Use a Node installation you own; REDUE does not need administrator privileges.
|
|
55
|
+
If a global prefix is not writable, use a user-owned `--prefix` or run the
|
|
56
|
+
installed CLI with Node. [Installation and removal](docs/user/getting-started.md)
|
|
57
|
+
includes PowerShell and isolated-prefix instructions.
|
|
58
|
+
|
|
59
|
+
Inside an existing, trusted Git project with dependencies already installed:
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
cd my-project
|
|
63
|
+
redue init
|
|
64
|
+
redue start
|
|
65
|
+
redue run typecheck # use a check name printed by init
|
|
66
|
+
redue status
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
`init` discovers existing scripts, explains which can qualify and which are
|
|
70
|
+
recording-only, and writes a small `redue.config.json`. It never runs your checks
|
|
71
|
+
or changes your package manager, source, scripts, or dependencies. Commit the
|
|
72
|
+
reviewed project config; local evidence stays outside the checkout.
|
|
73
|
+
|
|
74
|
+
Start with ordinary `status`. When it cannot establish caller context, use
|
|
75
|
+
`redue status --sync` if that is worthwhile—or just rerun an inexpensive check.
|
|
76
|
+
**Synchronization can cost more than rerunning a cheap check, particularly on
|
|
77
|
+
Windows.** REDUE does not choose or execute that tradeoff for you.
|
|
78
|
+
|
|
79
|
+
Since alpha.4, ordinary npm scripts are recording-only after
|
|
80
|
+
[an npm launcher applicability gap](docs/acceptance/npm-launcher-boundary.md).
|
|
81
|
+
A separate explicit [direct compiler recipe](docs/user/direct-typescript.md) can
|
|
82
|
+
qualify supported npm typechecks. It does not claim that npm/lifecycle scripts ran.
|
|
83
|
+
|
|
84
|
+
## Connect your agent (experimental)
|
|
85
|
+
|
|
86
|
+
```sh
|
|
87
|
+
redue agent setup codex --dry-run
|
|
88
|
+
redue agent setup codex --apply # or claude
|
|
89
|
+
redue agent doctor
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Start a fresh agent session and give it an ordinary task. Project-local guidance
|
|
93
|
+
teaches it to inspect evidence before deciding whether verification needs repeating.
|
|
94
|
+
Setup is explicit, reversible, and does not change tool permissions or run checks.
|
|
95
|
+
[Activation, removal, and generic-agent guidance](docs/user/agents.md).
|
|
96
|
+
|
|
97
|
+
The experimental claim is **opt-in project-local agent activation and direct TypeScript
|
|
98
|
+
evidence, with fresh-session reuse demonstrated in the tested Codex/macOS
|
|
99
|
+
configuration**. Claude setup/removal mechanics are tested; Claude behavior and
|
|
100
|
+
cross-host reuse are not. This is experimental guidance, not guaranteed agent
|
|
101
|
+
compliance, general sandbox compatibility, or a promise of time savings.
|
|
102
|
+
|
|
103
|
+
## What the states mean
|
|
104
|
+
|
|
105
|
+
| State | Meaning | Normal next step |
|
|
106
|
+
| --- | --- | --- |
|
|
107
|
+
| CURRENT | The recorded result applies to the declared inputs. | Reuse a passing result; do not rerun merely for freshness. |
|
|
108
|
+
| STALE | Relevant inputs changed since the recorded result. | Rerun when verification is needed. |
|
|
109
|
+
| UNVERIFIED | Applicability is unknown: no receipt, incomplete coverage, pending observation, or missing context. | Read the reason; synchronize if worthwhile, or run the check. |
|
|
110
|
+
| FAILED | The invocation failed. Its applicability is tracked separately. | Keep the failure visible; it is not green evidence. |
|
|
111
|
+
|
|
112
|
+
A historical PASS remains PASS when stale or unverified. A historical failure
|
|
113
|
+
never becomes a successful check. CURRENT does not mean every product behavior
|
|
114
|
+
has been verified.
|
|
115
|
+
|
|
116
|
+
## Supported alpha path
|
|
117
|
+
|
|
118
|
+
- macOS, Linux, and Windows on supported local filesystems; Node 22+.
|
|
119
|
+
- Linux also requires Python 3 for observation. No WSL or Git Bash needed on Windows.
|
|
120
|
+
- npm, pinned Yarn `node-modules`, and pinned pnpm 12 isolated/hoisted layouts.
|
|
121
|
+
- Automatic qualification for supported Yarn/pnpm TypeScript invocations; ordinary npm
|
|
122
|
+
launcher checks remain recording-only. Explicitly select the
|
|
123
|
+
[direct local compiler recipe](docs/user/direct-typescript.md) for the reviewed
|
|
124
|
+
npm/TypeScript boundary. Workspace
|
|
125
|
+
boundaries follow the files actually consumed, including built declarations.
|
|
126
|
+
- Existing test/lint/build and arbitrary commands can record results while
|
|
127
|
+
their applicability remains unqualified.
|
|
128
|
+
|
|
129
|
+
The [supported-project boundary](docs/user/supported-projects.md) is deliberately
|
|
130
|
+
narrow. A script named `test` is not automatically a complete test contract.
|
|
131
|
+
|
|
132
|
+
## Alpha limitations
|
|
133
|
+
|
|
134
|
+
- REDUE records evidence; it does not prove correctness.
|
|
135
|
+
- Direct commands outside `redue run` do not create receipts.
|
|
136
|
+
- Some tests, lints, and builds remain UNVERIFIED/PASS because their input contract is incomplete.
|
|
137
|
+
- Synchronized applicability has nontrivial cost and can lose to an inexpensive rerun.
|
|
138
|
+
- Unsupported/exotic install layouts and filesystems remain conservative; they do not become green through guesses.
|
|
139
|
+
- No cloud/team synchronization, IDE extension, or automatic background check execution.
|
|
140
|
+
- Alpha configuration and APIs may evolve. Neither cached nor synchronized status is an atomic snapshot against concurrent edits.
|
|
141
|
+
|
|
142
|
+
## Humans, shells, and agents
|
|
143
|
+
|
|
144
|
+
```sh
|
|
145
|
+
redue explain typecheck # synchronized explanation; may run read-only probes
|
|
146
|
+
redue status --json # conservative cached data
|
|
147
|
+
redue status --sync --json # caller-aware decision
|
|
148
|
+
redue status --short # small cached indicator; never synchronizes
|
|
149
|
+
redue stop # retains historical receipts
|
|
150
|
+
redue remove-state # removes only this config's owned local state
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Agents should use [the documented JSON interface](docs/user/json.md), not parse
|
|
154
|
+
terminal prose. [The canonical agent loop](docs/user/agents.md) keeps the
|
|
155
|
+
sync-versus-rerun choice explicit. [Shell usage](docs/user/shell.md) does not put
|
|
156
|
+
synchronized work in a prompt.
|
|
157
|
+
|
|
158
|
+
[User docs](docs/README.md) · [Contributing](CONTRIBUTING.md) ·
|
|
159
|
+
[Architecture](docs/contributor/architecture.md) · [Acceptance evidence](docs/acceptance/README.md)
|
|
160
|
+
|
|
161
|
+
## License
|
|
162
|
+
|
|
163
|
+
REDUE is licensed under [Apache-2.0](LICENSE). Dependencies retain their own licenses.
|