any-doctor 0.2.0 → 0.2.1
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/CONTEXT.md +22 -20
- package/README.md +21 -11
- package/docs/HANDOFF.md +90 -113
- package/docs/decisions.md +7 -0
- package/docs/doctor-modernization.md +44 -0
- package/docs/doctor-reliability.md +12 -10
- package/docs/features.md +83 -71
- package/docs/project-consumer-analysis.md +8 -3
- package/docs/vision.md +13 -8
- package/doctors/AGENTS.md +3 -2
- package/doctors/deepgram.fixtures.mjs +2 -4
- package/doctors/deepgram.mjs +5 -20
- package/doctors/effect-v4-kitlangton.fixtures.mjs +91 -4
- package/doctors/effect-v4-kitlangton.mjs +234 -273
- package/doctors/slop.fixtures.mjs +43 -0
- package/doctors/slop.mjs +128 -87
- package/package.json +1 -1
- package/skill/any-doctor.skill.md +3 -2
package/CONTEXT.md
CHANGED
|
@@ -5,11 +5,10 @@ When a term here conflicts with language elsewhere, this file wins.
|
|
|
5
5
|
|
|
6
6
|
Current product intent lives in [docs/vision.md](docs/vision.md). For work on
|
|
7
7
|
persistent decisions, history, identity, or team convergence, read the
|
|
8
|
-
[lifecycle design](docs/plans/finding-lifecycle/design.md)
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
unless a term is explicitly marked planned.
|
|
8
|
+
[lifecycle design](docs/plans/finding-lifecycle/design.md). Identity (M1) and
|
|
9
|
+
remembered local decisions (M2) have landed; Git-shared decisions (M3) and
|
|
10
|
+
bounded history (M4) remain planned. The glossary below describes current
|
|
11
|
+
behavior unless a term is explicitly marked planned.
|
|
13
12
|
|
|
14
13
|
## Doctor program
|
|
15
14
|
|
|
@@ -88,8 +87,8 @@ tree without rebuilding it. A SiteFinding's readKey
|
|
|
88
87
|
Text the dashboard copies to the clipboard as one unit of agent work: one
|
|
89
88
|
finding (fixPrompt), every finding of one check (checkFixPrompt), or a
|
|
90
89
|
doctor's whole batch (doctorFixPrompt) — pure functions of Doctor-tree
|
|
91
|
-
types plus the verify command, no terminal required. The
|
|
92
|
-
(M2)
|
|
90
|
+
types plus the verify command, no terminal required. The local-decision
|
|
91
|
+
delivery (M2) reworked this family toward investigation-first framing and
|
|
93
92
|
authorized decision paths.
|
|
94
93
|
|
|
95
94
|
## Gate
|
|
@@ -384,9 +383,10 @@ Where a doctor program lives: repo-local (`./doctors/`, committed with
|
|
|
384
383
|
the consuming repo), user-global (`~/.any-doctor/doctors/`, available
|
|
385
384
|
in every repo), or bundled (the first-party pack inside the package,
|
|
386
385
|
read-only — a starting point, not a dependency). Repo-local wins slug
|
|
387
|
-
collisions, then user-global, then bundled. Scanning
|
|
388
|
-
|
|
389
|
-
separate from doctor discovery and does
|
|
386
|
+
collisions, then user-global, then bundled. Scanning itself remains read-only.
|
|
387
|
+
Recording a review decision creates CLI-owned local state under the target's
|
|
388
|
+
`.any-doctor/` directory; that state is separate from doctor discovery and does
|
|
389
|
+
not grant doctors write capabilities.
|
|
390
390
|
|
|
391
391
|
## Skill
|
|
392
392
|
|
|
@@ -406,18 +406,19 @@ positive witness. Unspecified legacy units and unavailable analysis are
|
|
|
406
406
|
reported as not exercised, not counted as passing. Fixture expectations
|
|
407
407
|
establish tested coverage, not general correctness or independence of labels.
|
|
408
408
|
|
|
409
|
-
## Lifecycle vocabulary
|
|
409
|
+
## Lifecycle vocabulary
|
|
410
410
|
|
|
411
|
-
These terms describe
|
|
412
|
-
DoctorCtx. The [design](docs/plans/finding-lifecycle/design.md)
|
|
413
|
-
and applicability rules.
|
|
411
|
+
These terms describe shipped and planned lifecycle behavior. They are CLI-owned,
|
|
412
|
+
not DoctorCtx capabilities. The [design](docs/plans/finding-lifecycle/design.md)
|
|
413
|
+
owns their data and applicability rules.
|
|
414
414
|
|
|
415
|
-
- **Finding identity** *(landed in
|
|
415
|
+
- **Finding identity** *(landed in diff and local decisions, D30/D31)*: continuity of one
|
|
416
416
|
occurrence across comparable scans, distinct from its current source
|
|
417
|
-
coordinates. Host-derived today — check key, file, normalized
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
- **Observation
|
|
417
|
+
coordinates. Host-derived today — check key, file, normalized evidence digest,
|
|
418
|
+
indentation-relative column, and innermost enclosing function span. The CLI
|
|
419
|
+
computes it from source-bound capture; local decisions persist the resulting key.
|
|
420
|
+
- **Observation** *(planned, M4)*: evidence that a finding was detected in a
|
|
421
|
+
particular retained scan.
|
|
421
422
|
- **Decision** *(landed locally, D31)*: a reasoned accepted/not-applicable
|
|
422
423
|
disposition with a required reason, stored in the local decisions file,
|
|
423
424
|
reversible, attached to a Finding identity — it changes review state
|
|
@@ -429,7 +430,8 @@ and applicability rules.
|
|
|
429
430
|
matched by cardinality are flagged ambiguous.
|
|
430
431
|
- **No longer detected** *(landed in the diff path)*: absence established by
|
|
431
432
|
compatible, completed coverage.
|
|
432
|
-
- **Claimed fix
|
|
433
|
+
- **Claimed fix** *(planned, M4)*: a recorded explanation of remediation,
|
|
434
|
+
separate from rescan evidence.
|
|
433
435
|
- **Reassessment** *(landed locally)*: a decision requires review because
|
|
434
436
|
its evidence changed — the finding resurfaces with a warning; the
|
|
435
437
|
decision is never silently carried.
|
package/README.md
CHANGED
|
@@ -13,8 +13,9 @@ rescan after changes. Saved doctors run without model inference.
|
|
|
13
13
|
|
|
14
14
|
Analysis runs locally without an account, API key, or telemetry. Package/tool
|
|
15
15
|
installation can require downloads; the doctor runtime has no network access.
|
|
16
|
-
Remembered decisions and
|
|
17
|
-
|
|
16
|
+
Remembered local decisions persist between runs and resurface when their source
|
|
17
|
+
evidence or doctor meaning changes. Shared project decisions and finding history
|
|
18
|
+
remain [planned](docs/plans/finding-lifecycle/proposal.md).
|
|
18
19
|
|
|
19
20
|
[](https://www.npmjs.com/package/any-doctor)
|
|
20
21
|
[](#)
|
|
@@ -38,6 +39,13 @@ npx any-doctor@latest run slop # one doctor, straight to the report
|
|
|
38
39
|
Non-terminals and CI never see a prompt — output is stable and pipeable
|
|
39
40
|
(`--format json`, or `ANY_DOCTOR_HEADLESS=1`).
|
|
40
41
|
|
|
42
|
+
During review, press `a` to accept an applicable concern or `x` to mark it not
|
|
43
|
+
applicable; both require a reason. The decision is stored locally under
|
|
44
|
+
`.any-doctor/`, hides the matching occurrence from later active lists, and can
|
|
45
|
+
be inspected or reversed with `any-doctor decisions`. Changed evidence resurfaces
|
|
46
|
+
the finding for reassessment. Local decisions never suppress raw JSON findings or
|
|
47
|
+
change CI gates; keep `.any-doctor/decisions.local.json` untracked.
|
|
48
|
+
|
|
41
49
|
## The bundled pack
|
|
42
50
|
|
|
43
51
|
| Doctor | Discipline | Checks |
|
|
@@ -51,8 +59,8 @@ Non-terminals and CI never see a prompt — output is stable and pipeable
|
|
|
51
59
|
|
|
52
60
|
Checks ship positive and innocent-lookalike fixtures. `verify` compares an
|
|
53
61
|
exact multiset of rule/file/line and optional column, then runs shared innocent
|
|
54
|
-
and sensitivity corpora.
|
|
55
|
-
|
|
62
|
+
and sensitivity corpora. Every bundled check declares its reporting unit, and
|
|
63
|
+
occurrence checks carry per-check location coverage. Passing fixtures show
|
|
56
64
|
agreement on those cases, not a general accuracy guarantee. See
|
|
57
65
|
[the reliability protocol](docs/doctor-reliability.md).
|
|
58
66
|
|
|
@@ -133,9 +141,9 @@ npx any-doctor@latest run --all --fail-on warning --base origin/main
|
|
|
133
141
|
| [CONTEXT.md](CONTEXT.md) | Domain glossary — canonical terms |
|
|
134
142
|
| [docs/vision.md](docs/vision.md) | Current goals and product direction |
|
|
135
143
|
| [docs/features.md](docs/features.md) | Available features versus planned work |
|
|
136
|
-
| [docs/plans/analysis-improvements.md](docs/plans/analysis-improvements.md) |
|
|
137
|
-
| [docs/plans/finding-lifecycle/proposal.md](docs/plans/finding-lifecycle/proposal.md) |
|
|
138
|
-
| [docs/plans/finding-lifecycle/design.md](docs/plans/finding-lifecycle/design.md) | State ownership,
|
|
144
|
+
| [docs/plans/analysis-improvements.md](docs/plans/analysis-improvements.md) | Delivered identity work and later analysis opportunities |
|
|
145
|
+
| [docs/plans/finding-lifecycle/proposal.md](docs/plans/finding-lifecycle/proposal.md) | Current local decisions plus planned history and team workflows |
|
|
146
|
+
| [docs/plans/finding-lifecycle/design.md](docs/plans/finding-lifecycle/design.md) | State ownership, Git convergence, future history storage, and open choices |
|
|
139
147
|
| [docs/plans/finding-lifecycle/milestones.md](docs/plans/finding-lifecycle/milestones.md) | Implementation slices and acceptance evidence |
|
|
140
148
|
| [docs/HANDOFF.md](docs/HANDOFF.md) | Current handoff and next bounded task |
|
|
141
149
|
| [docs/decisions.md](docs/decisions.md) | Historical choices and explicit supersessions |
|
|
@@ -145,7 +153,9 @@ npx any-doctor@latest run --all --fail-on warning --base origin/main
|
|
|
145
153
|
|
|
146
154
|
## Status
|
|
147
155
|
|
|
148
|
-
Pre-1.0.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
156
|
+
Pre-1.0. Finding identity and remembered local decisions are available. The next
|
|
157
|
+
product phase is real-world adoption and reliability feedback; the next planned
|
|
158
|
+
lifecycle feature is Git-shared project decisions, followed separately by bounded
|
|
159
|
+
local history. Scanning stays available through npx without mandatory
|
|
160
|
+
initialization. See the [feature map](docs/features.md) for current availability.
|
|
161
|
+
MIT.
|
package/docs/HANDOFF.md
CHANGED
|
@@ -1,117 +1,94 @@
|
|
|
1
|
-
# Handoff — finding lifecycle
|
|
1
|
+
# Handoff — post-0.2.0 adoption and finding lifecycle
|
|
2
2
|
|
|
3
|
-
Updated September
|
|
4
|
-
|
|
3
|
+
Updated September 22, 2026. Start here when continuing Any Doctor's product
|
|
4
|
+
direction, adoption work, decisions, history, identity, or team sharing.
|
|
5
|
+
|
|
6
|
+
## Current release state
|
|
7
|
+
|
|
8
|
+
- npm package: `any-doctor@0.2.0`.
|
|
9
|
+
- Source release tag: `v0.2.0` at `3f98de0`.
|
|
10
|
+
- `main` additionally contains `5b91bf8`, a test-only PTY release-gate
|
|
11
|
+
stabilization; the packed artifact was byte-identical after that change.
|
|
12
|
+
- Release verification completed with 1,091 tests, all bundled doctors verified,
|
|
13
|
+
capability-gap certification, packed-consumer checks and a clean diff check.
|
|
14
|
+
|
|
15
|
+
Recheck npm, HEAD and the working tree before making a new release claim. Evidence
|
|
16
|
+
records describe their named candidates; they are not automatically current.
|
|
5
17
|
|
|
6
18
|
## Read in order
|
|
7
19
|
|
|
8
|
-
1. [Vision](vision.md):
|
|
9
|
-
2. [Feature map](features.md):
|
|
10
|
-
3. [Lifecycle proposal](plans/finding-lifecycle/proposal.md): user and agent
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
[
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
choices are recorded in D30 and the [design](plans/finding-lifecycle/design.md)
|
|
84
|
-
open-choice table; per-check compatibility revisions and doctor-supplied
|
|
85
|
-
evidence are still open there because nothing persists yet.
|
|
86
|
-
|
|
87
|
-
Broader module resolution, value flow, control flow, and optional types are later
|
|
88
|
-
independently scoped capabilities. They do not all block M2/M3. Measure the real
|
|
89
|
-
scanner separately from synthetic identity records; report current limits and
|
|
90
|
-
assign scanner-scale work explicitly before claiming massive-codebase capacity.
|
|
91
|
-
|
|
92
|
-
M3 (share decisions through Git, CI application) is next; M4 adds bounded
|
|
93
|
-
history. These are planning increments, not authorization to run all four
|
|
94
|
-
or publish a version.
|
|
95
|
-
Resolve open choices in their milestone and write accepted decisions back to the
|
|
96
|
-
design and decision log. Maintain one-off read-only scans and doctor confinement.
|
|
97
|
-
|
|
98
|
-
## Product constraints to preserve
|
|
99
|
-
|
|
100
|
-
Useful contextual findings and user-defined conventions remain in scope. The goal
|
|
101
|
-
is better review with the user's own agent, not forcing every report to zero.
|
|
102
|
-
Accepted concerns, not-applicable findings, observed disappearance, and claimed
|
|
103
|
-
fixes must remain distinct. A dismissal does not authorize broad detector changes.
|
|
104
|
-
|
|
105
|
-
SQLite is local state; committed project files are authoritative for team decisions.
|
|
106
|
-
Private decisions cannot silently change CI. Git branch changes and semantic merge
|
|
107
|
-
conflicts must be tested, including cache rebuild from shared records. No mandatory
|
|
108
|
-
hosted service, account, init, or built-in model provider is required.
|
|
109
|
-
|
|
110
|
-
## Validation for the next agent
|
|
111
|
-
|
|
112
|
-
Use the milestone's acceptance cases and independent counterexamples. Review the
|
|
113
|
-
actual candidate, pack/install it, and exercise a real target such as Sift without
|
|
114
|
-
changing unrelated product code. Sift alone does not validate massive-codebase
|
|
115
|
-
performance; retain the scale harness results and limits too. Update this handoff
|
|
116
|
-
with the delivered slice, exact evidence, and remaining open choices. The maintainer
|
|
117
|
-
owns versioning and publication unless a later instruction explicitly changes that.
|
|
20
|
+
1. [Vision](vision.md): purpose and trust model.
|
|
21
|
+
2. [Feature map](features.md): shipped behavior versus planned work.
|
|
22
|
+
3. [Lifecycle proposal](plans/finding-lifecycle/proposal.md): user and agent
|
|
23
|
+
workflows.
|
|
24
|
+
4. [Lifecycle design](plans/finding-lifecycle/design.md): state ownership,
|
|
25
|
+
identity, Git reconciliation and remaining choices.
|
|
26
|
+
5. [Lifecycle milestones](plans/finding-lifecycle/milestones.md): completed M1/M2
|
|
27
|
+
and planned M3/M4 boundaries.
|
|
28
|
+
6. [Doctor SDK](doctor-sdk.md) and [Value Path](plans/value-path/design.md): the
|
|
29
|
+
shipped semantic authoring surface.
|
|
30
|
+
7. [Bundled doctor modernization](doctor-modernization.md): current shared seams,
|
|
31
|
+
retained domain policy and verification expectations for every doctor.
|
|
32
|
+
|
|
33
|
+
## What shipped before and in 0.2.0
|
|
34
|
+
|
|
35
|
+
- M1 identity-aware Git-base comparison with source-bound evidence, conservative
|
|
36
|
+
ambiguity and stale-source handling.
|
|
37
|
+
- M2 remembered local accepted/not-applicable decisions, required reasons,
|
|
38
|
+
reversal, reassessment, dashboard and agent/JSON workflows. State is atomic
|
|
39
|
+
JSON, not SQLite; gates remain based on raw findings.
|
|
40
|
+
- The Doctor SDK semantic result contract, shared recipes and maintained challenge
|
|
41
|
+
profiles.
|
|
42
|
+
- Value Path as a bounded shared property-path query, adopted by Deepgram and
|
|
43
|
+
OpenRouter. A later fidelity audit removed Deepgram's private fallback and
|
|
44
|
+
intentionally narrowed one nested opaque-transfer credential case.
|
|
45
|
+
- Locally complete recipe modules behind one registry.
|
|
46
|
+
- The bundled doctors use the shared provider consistently: Async is recipe-native;
|
|
47
|
+
Deepgram and OpenRouter use Value Path; Convex retains domain-specific graph
|
|
48
|
+
policy over shared facts; Effect and Slop no longer carry line/brace parsers.
|
|
49
|
+
|
|
50
|
+
Authoritative architectural decisions are D30–D33 in
|
|
51
|
+
[decisions.md](decisions.md). Preserved implementation plans and evidence may
|
|
52
|
+
contain older branch names, package versions and baseline counts.
|
|
53
|
+
|
|
54
|
+
## Immediate phase: adoption
|
|
55
|
+
|
|
56
|
+
Use real repositories to measure:
|
|
57
|
+
|
|
58
|
+
- time to the first useful finding;
|
|
59
|
+
- false positives and missed findings, classified per check;
|
|
60
|
+
- narrowed/unknown cases users expected the tool to answer;
|
|
61
|
+
- first-attempt `generate` → `verify` → `run` success for a custom doctor;
|
|
62
|
+
- whether users understand and use remembered decisions;
|
|
63
|
+
- installation, performance, terminal and JSON friction.
|
|
64
|
+
|
|
65
|
+
Prefer small `0.2.x` documentation, correctness and usability repairs backed by
|
|
66
|
+
reproductions. A new semantic capability starts from a concrete false positive or
|
|
67
|
+
miss plus valid lookalikes; Value Path remains bounded rather than growing into a
|
|
68
|
+
general JavaScript interpreter.
|
|
69
|
+
|
|
70
|
+
## Next planned feature: M3 shared project decisions
|
|
71
|
+
|
|
72
|
+
M3 makes selected decisions reviewable Git-tracked project state and applies them
|
|
73
|
+
consistently in fresh checkouts and CI. It must preserve private local decisions,
|
|
74
|
+
raw findings, doctor confinement and one-off read-only scans.
|
|
75
|
+
|
|
76
|
+
Before implementation, resolve and record:
|
|
77
|
+
|
|
78
|
+
- shared record layout and deterministic serialization;
|
|
79
|
+
- doctor namespace/rename identity;
|
|
80
|
+
- semantic conflict behavior after textual Git merges;
|
|
81
|
+
- branch/worktree reconciliation and deletion;
|
|
82
|
+
- read-only CI application and whether shared decisions affect gates;
|
|
83
|
+
- raw, active and reviewed score presentation.
|
|
84
|
+
|
|
85
|
+
M4 bounded history is separate. It is the point to reconsider SQLite or another
|
|
86
|
+
indexed local store; M3 does not require a database merely to share decisions.
|
|
87
|
+
|
|
88
|
+
## Completion evidence for future slices
|
|
89
|
+
|
|
90
|
+
Bind the exact candidate and target, reproduce the motivating case, run focused
|
|
91
|
+
and full tests, verify all doctors, build and pack, exercise a clean consumer and a
|
|
92
|
+
representative real repository, review the actual diff, and record limitations.
|
|
93
|
+
Publication and version changes remain separate maintainer actions unless a task
|
|
94
|
+
explicitly authorizes them.
|
package/docs/decisions.md
CHANGED
|
@@ -1313,6 +1313,13 @@ specialized identity and control-flow policy remains local. Later Doctors
|
|
|
1313
1313
|
migrate when that same deletion test demonstrates leverage. Accuracy changes
|
|
1314
1314
|
are reviewed separately from the architecture migration.
|
|
1315
1315
|
|
|
1316
|
+
**Later audit note (2026-09-22):** The bundled-doctor modernization audit made
|
|
1317
|
+
one separately reviewed accuracy change: Deepgram now trusts Value Path's unknown
|
|
1318
|
+
result after a configuration is nested inside an object passed to an opaque call,
|
|
1319
|
+
rather than reviving the old resolver's definite credential finding. The case
|
|
1320
|
+
narrows because the opaque call may mutate the nested configuration. D32's
|
|
1321
|
+
architecture and proof boundary are unchanged.
|
|
1322
|
+
|
|
1316
1323
|
**Consequences:** Doctor programs become smaller policy modules over shared
|
|
1317
1324
|
semantic proof, while the host owns source integrity, caching, evaluation and
|
|
1318
1325
|
uncertainty. Certification gains one cross-language-ready conformance contract.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Bundled doctor modernization
|
|
2
|
+
|
|
3
|
+
Updated September 22, 2026. This is the current architecture map for bundled
|
|
4
|
+
doctors. “Modernized” means a doctor uses host-owned facts for language mechanics,
|
|
5
|
+
declares every required capability and unknown policy, and keeps only technology
|
|
6
|
+
meaning behind its own interface. It does not mean every doctor is expressed as
|
|
7
|
+
a recipe or that passing fixtures proves accuracy on arbitrary repositories.
|
|
8
|
+
|
|
9
|
+
| Doctor | Shared mechanics | Deliberately local policy |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| Async | Identity, option presence, value disposition and resource lifetime through three certified recipes | Which native request, promise-array and React timer observations merit review |
|
|
12
|
+
| Convex | Calls, bindings, types, function ownership, branches, directives and value flow | Convex registration/context/query-chain semantics; generic recipes do not express correlated query paths or context capabilities |
|
|
13
|
+
| Deepgram | Calls, identity and Value Path for property proof | Endpoint/model matrices, transport support, Read validation, hosts and browser credential policy |
|
|
14
|
+
| OpenRouter | Calls, identity, option presence, the required-option recipe and Value Path | Stream provenance, same-chunk guards, response-dependent retry loops and model-pin policy |
|
|
15
|
+
| Effect | Structural search plus shared calls, identity, bindings and exact spans | The Effect v4 skill's policy choices and test-file convention |
|
|
16
|
+
| Slop | Exact spans, calls/value flow, lexical bindings, project consumers and structural fingerprints | Corpus-derived thresholds and the interpretation of maintenance review candidates |
|
|
17
|
+
|
|
18
|
+
## Audit outcomes
|
|
19
|
+
|
|
20
|
+
- Effect no longer counts braces, scans raw lines for API calls, or parses zod
|
|
21
|
+
argument lists. It resolves imports and aliases, honors shadowing, accepts
|
|
22
|
+
multiline names, uses exact class/function ranges, and reports full evidence.
|
|
23
|
+
- Slop's hostname, overlapping-substring, tri-state and abbreviation checks no
|
|
24
|
+
longer depend on same-line formatting. Receiver identity and actual call
|
|
25
|
+
argument roles remove nearby-lookalike false positives.
|
|
26
|
+
- Deepgram no longer revives a private property-walker answer after Value Path
|
|
27
|
+
returns unknown. A nested configuration passed through an opaque object now
|
|
28
|
+
narrows because mutation cannot be excluded.
|
|
29
|
+
- Async, OpenRouter and Convex already used the accepted shared seams. Their
|
|
30
|
+
specialized policy remains local because moving it into a generic recipe would
|
|
31
|
+
enlarge the interface without a second equivalent consumer.
|
|
32
|
+
|
|
33
|
+
## Maintainer rule
|
|
34
|
+
|
|
35
|
+
Do not judge modernization by file size or recipe count. Apply the deletion test:
|
|
36
|
+
move a mechanic into the host when deleting the shared module would force the same
|
|
37
|
+
language reasoning back into multiple doctors. Keep technology-specific meaning
|
|
38
|
+
local. Add a Doctor SDK or Value Path capability only from a reproduced miss or
|
|
39
|
+
false positive with definite-positive, negative, uncertain and mixed-neighbor
|
|
40
|
+
evidence. Unsupported flow narrows; it never becomes confident absence.
|
|
41
|
+
|
|
42
|
+
For a release, run the complete suite, `verify --all`, capability-gap certification,
|
|
43
|
+
package dry-run and packed-consumer checks. Compare any changed findings against
|
|
44
|
+
fixed source, not just counts.
|
|
@@ -4,10 +4,10 @@ A passing fixture suite establishes agreement on its cases. It does not establis
|
|
|
4
4
|
precision on arbitrary repositories. Treat every check as a bounded claim.
|
|
5
5
|
|
|
6
6
|
The [Doctor SDK foundations](doctor-sdk.md) move recurring identity, value-flow,
|
|
7
|
-
resource and option mechanics into host-owned semantic queries and certify
|
|
8
|
-
reusable recipes with metadata-selected challenge profiles. The
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
resource and option mechanics into host-owned semantic queries and certify four
|
|
8
|
+
reusable recipes with metadata-selected challenge profiles. The SDK and Value
|
|
9
|
+
Path are published in `0.2.0`; the [design](plans/doctor-sdk/design.md) records
|
|
10
|
+
their governing boundary.
|
|
11
11
|
|
|
12
12
|
The [vision](vision.md) includes project-specific policies and contextual review
|
|
13
13
|
candidates alongside defects. Reliability means the evidence supports the stated
|
|
@@ -51,14 +51,16 @@ corrected false positive, preserved positive, intentional narrowing, new candida
|
|
|
51
51
|
or regression. Counts alone cannot establish improvement. Record versions, target
|
|
52
52
|
commit and dirty state, analysis availability, crashes, and unsupported cases.
|
|
53
53
|
|
|
54
|
-
## Review decisions and reliability
|
|
54
|
+
## Review decisions and reliability
|
|
55
55
|
|
|
56
|
-
The [lifecycle proposal](plans/finding-lifecycle/proposal.md)
|
|
57
|
-
not-applicable decisions.
|
|
56
|
+
The [lifecycle proposal](plans/finding-lifecycle/proposal.md) defines accepted and
|
|
57
|
+
not-applicable decisions. Local decisions are implemented; project sharing and
|
|
58
|
+
history remain planned. Preserve their reasons and distinguish the two: an
|
|
58
59
|
accepted concern is not evidence that the detector is wrong. A confirmed
|
|
59
60
|
not-applicable case should become a counterexample for its rule when appropriate.
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
Decisions change the active review view, not raw observations or analysis coverage.
|
|
62
|
+
Local decisions do not change gates. No decision may silently teach a doctor to
|
|
63
|
+
ignore unrelated similar code.
|
|
62
64
|
|
|
63
65
|
Revalidate decision applicability after relevant source or rule changes. A claimed
|
|
64
66
|
fix, a disappearance under comparable coverage, and an accepted finding are
|
|
@@ -71,7 +73,7 @@ authorize telemetry, uploading source, or automatic global rule changes.
|
|
|
71
73
|
|
|
72
74
|
## Current Convex boundaries
|
|
73
75
|
|
|
74
|
-
Convex revision-2 checks use shared call structure and lexical identity. Supported
|
|
76
|
+
Convex revision-2/3 checks use shared call structure and lexical identity. Supported
|
|
75
77
|
registration imports, immutable aliases, local handler/config variables and direct
|
|
76
78
|
handlers establish contexts. Database aliases, destructuring, imported context
|
|
77
79
|
types (including local aliases and `Pick`), and consistent observed local helper
|