@mcptoolshop/research-os 0.2.0 → 0.3.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/CHANGELOG.md +194 -0
- package/README.md +9 -5
- package/dist/cli.js +245 -57
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +185 -86
- package/dist/index.js +234 -52
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,200 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `research-os` are documented here.
|
|
4
4
|
|
|
5
|
+
## [0.3.1] — 2026-05-09
|
|
6
|
+
|
|
7
|
+
Tight release. One real, tested, dogfooded improvement: section-scoped
|
|
8
|
+
source-floor waivers + reviewer-side acknowledgement. Earned by Experiment 3
|
|
9
|
+
XRPL pack Session 2 — canonical-protocol sections (XRPL XLS standards,
|
|
10
|
+
single-foundation chain documentation, walled-garden API specs) inverted
|
|
11
|
+
the assumption that publisher diversity is a proxy for truth quality. No
|
|
12
|
+
other v0.3.x candidates shipped — F-01 (init version-stamp), F-02
|
|
13
|
+
(packs-dir docs), F-05 (discover --query example), F-08 (Windows process
|
|
14
|
+
recovery), F-16 (unused SectionSchema fields), F-17 (sections/<id>/gates.yaml
|
|
15
|
+
runtime wiring) are deferred to their own scoped releases.
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **`primary_source_waiver.section_waivers[]`** — section-scoped source-floor
|
|
20
|
+
waivers. Each entry carries `section_id`, `scope` (`min_independent_publishers`
|
|
21
|
+
or `primary_sources_required`), `reason` (non-empty), and
|
|
22
|
+
`compensating_controls[]` (at least one entry). Schema enforcement: empty
|
|
23
|
+
`reason` or empty `compensating_controls[]` fail validation. Pack policy
|
|
24
|
+
`gates.source_floor.primary_source_waiver_allowed: false` blocks both
|
|
25
|
+
pack-level and section-scoped waivers — operators cannot smuggle a waiver
|
|
26
|
+
past pack policy by rerouting it to section scope.
|
|
27
|
+
|
|
28
|
+
Multiple entries can target different sections, or the same section with
|
|
29
|
+
different scopes. Pack-level `primary_source_waiver` semantics unchanged;
|
|
30
|
+
the new `section_waivers[]` is additive and defaults to `[]` for backward
|
|
31
|
+
compatibility. Existing packs unaffected. Full reference:
|
|
32
|
+
[`docs/section-scoped-waivers.md`](docs/section-scoped-waivers.md).
|
|
33
|
+
|
|
34
|
+
- **Reviewer-side acknowledgement** — when a section has a matching
|
|
35
|
+
`min_independent_publishers` waiver in effect, the calibrated reviewer's
|
|
36
|
+
section-wide `source_cluster_monopoly` finding remains visible in the
|
|
37
|
+
findings ledger but does NOT, by itself, route claims to
|
|
38
|
+
`needs_source_repair`. The finding is annotated as
|
|
39
|
+
`(severity, waived)` in the claim-review's reason string so operators
|
|
40
|
+
reading the ledger can see the finding is present but neutralised. Other
|
|
41
|
+
source-quality findings (per-claim `source_quality_problem`,
|
|
42
|
+
`scope_widening`, `overgeneralized_claim`, etc.) continue to drive their
|
|
43
|
+
own routing normally.
|
|
44
|
+
|
|
45
|
+
- **Audit-side disclosure** — `weak-sources.{json,md}` and
|
|
46
|
+
`source-diversity-gaps.{json,md}` rollups annotate waived rows with
|
|
47
|
+
`waived: true` and `waiver_reason: <verbatim>` when a matching section
|
|
48
|
+
waiver is active. Rows are NOT removed (Law 16: waivers do not hide
|
|
49
|
+
evidence). The publisher-monopoly fact is still surfaced in the rollup;
|
|
50
|
+
it's disclosed as deliberately accepted rather than as an open blocker.
|
|
51
|
+
|
|
52
|
+
- **13 new tests** in `test/section-scoped-waivers.test.ts` covering
|
|
53
|
+
schema validation (valid shape, missing reason, empty compensating
|
|
54
|
+
controls, invalid scope enum, bad section_id regex), gate-side
|
|
55
|
+
conversion (section_id match, section_id mismatch, primary_sources_required
|
|
56
|
+
scope, pack-level regression, pack-policy refusal, multiple sections,
|
|
57
|
+
multiple scopes for same section, disclosure in WaiverApplication),
|
|
58
|
+
reviewer-side acknowledgement (waived monopoly → accepted, per-claim
|
|
59
|
+
quality still routes, regression without waiver), and audit-side
|
|
60
|
+
annotation.
|
|
61
|
+
|
|
62
|
+
- **`docs/section-scoped-waivers.md`** — full operator reference: schema,
|
|
63
|
+
behavior contract, valid-cases / invalid-cases enumeration, required
|
|
64
|
+
operator discipline (synthesis-time disclosure beyond the schema), and
|
|
65
|
+
the release thesis. Opens with the canonical phrasing:
|
|
66
|
+
*"Use section-scoped source waivers when publisher diversity is
|
|
67
|
+
structurally incompatible with the section's truth source, not when a
|
|
68
|
+
section merely failed to find enough sources."*
|
|
69
|
+
|
|
70
|
+
- **Handbook page** at `/handbook/section-scoped-waivers` — condensed
|
|
71
|
+
reference matching the docs page.
|
|
72
|
+
|
|
73
|
+
### Changed
|
|
74
|
+
|
|
75
|
+
- **Pack-level `min_independent_publishers: 0` workaround DEPRECATED**
|
|
76
|
+
in the canonical `research-packs/docs/operator-playbook.md` and the
|
|
77
|
+
research-os handbook mirror. The pack-level pattern remains valid for
|
|
78
|
+
already-frozen packs (e.g., `packages/comfyui-workflow-durability/`)
|
|
79
|
+
whose freeze receipts are unchanged; new packs should prefer the
|
|
80
|
+
section-scoped pattern. Forward notes added to
|
|
81
|
+
[`docs/experiment-1-proof.md`](docs/experiment-1-proof.md) at the
|
|
82
|
+
references to the deprecated workaround — historical content
|
|
83
|
+
preserved, not rewritten.
|
|
84
|
+
|
|
85
|
+
### Documentation
|
|
86
|
+
|
|
87
|
+
- README status block updated to v0.3.1; version badge updated.
|
|
88
|
+
- `docs/roadmap.md` Experiment 3 progress: section-scoped source waivers
|
|
89
|
+
shipped in v0.3.1; pack #2 of 3 (XRPL) earned both v0.3.0 and v0.3.1
|
|
90
|
+
fixes. Two more external-domain packs required for closure.
|
|
91
|
+
- **Cross-repo:** `research-packs/docs/operator-playbook.md` updated in
|
|
92
|
+
the same release window. Adds the section-scoped waiver pattern as the
|
|
93
|
+
canonical guidance with the same anti-misuse framing as the research-os
|
|
94
|
+
docs page (public guidance is consistent across the surface by design).
|
|
95
|
+
Deprecates the `min_independent_publishers: 0` pack-level workaround.
|
|
96
|
+
|
|
97
|
+
### Tests
|
|
98
|
+
|
|
99
|
+
- **540 total** (527 at v0.3.0 → 540 at v0.3.1, +13 from
|
|
100
|
+
`test/section-scoped-waivers.test.ts`).
|
|
101
|
+
|
|
102
|
+
### Migration notes
|
|
103
|
+
|
|
104
|
+
No code-level migration required. Existing packs continue to work
|
|
105
|
+
unchanged — `section_waivers` defaults to `[]`. Frozen packs' freeze
|
|
106
|
+
receipts remain valid (the schema addition is additive).
|
|
107
|
+
|
|
108
|
+
For new canonical-protocol packs: prefer section-scoped waivers over the
|
|
109
|
+
deprecated pack-level `min_independent_publishers: 0` workaround. The
|
|
110
|
+
section-scoped pattern preserves the publisher-diversity floor on every
|
|
111
|
+
section that doesn't waive it explicitly.
|
|
112
|
+
|
|
113
|
+
For operators with packs already using the deprecated pack-level
|
|
114
|
+
workaround: the pattern remains valid; no migration is required. If you
|
|
115
|
+
want to tighten the global default and waive specific sections instead,
|
|
116
|
+
that's a clean per-section migration — set
|
|
117
|
+
`min_independent_publishers` back to its non-zero pack default and add
|
|
118
|
+
section_waivers entries for the sections that need them, with
|
|
119
|
+
`reason` and `compensating_controls[]` documented.
|
|
120
|
+
|
|
121
|
+
## [0.3.0] — 2026-05-09
|
|
122
|
+
|
|
123
|
+
Tight release. One real, tested, dogfooded improvement: `--detector` flag on
|
|
124
|
+
`research-os contradict map`. F-09 from Experiment 3 Session 1 (XRPL pack)
|
|
125
|
+
earned the fix. No other v0.3 candidates shipped — F-01 (init version-stamp),
|
|
126
|
+
F-02 (packs-dir docs), F-05 (discover --query example), F-08 (Windows process
|
|
127
|
+
recovery) are deferred to v0.3.x.
|
|
128
|
+
|
|
129
|
+
### Added
|
|
130
|
+
|
|
131
|
+
- **`--detector <auto|heuristic|ollama-intern>`** flag on
|
|
132
|
+
`research-os contradict map`. Three explicit modes:
|
|
133
|
+
|
|
134
|
+
- `auto` (default) — preserves env-var-driven behavior. When the
|
|
135
|
+
configured Ollama model is available, runs the LLM detector;
|
|
136
|
+
otherwise falls through to heuristic. Mirrors v0.2.x behavior.
|
|
137
|
+
- `heuristic` — bypasses Ollama entirely. No model availability check,
|
|
138
|
+
no LLM calls. Always works. Always completes quickly.
|
|
139
|
+
- `ollama-intern` — requires the configured model. Exits with code 2
|
|
140
|
+
and a visible failure message if the model is unavailable, instead
|
|
141
|
+
of silently falling back to heuristic.
|
|
142
|
+
|
|
143
|
+
Invalid `--detector` values exit with code 2. The mode chosen is
|
|
144
|
+
announced visibly on the first output line of every run; there are no
|
|
145
|
+
silent shifts. Full reference: [`docs/contradict-map.md`](docs/contradict-map.md).
|
|
146
|
+
|
|
147
|
+
- **12 new tests** in `test/contradictions-detector-flag.test.ts` covering
|
|
148
|
+
all three modes (heuristic never instantiates the Ollama client;
|
|
149
|
+
ollama-intern errors visibly when model unavailable; auto preserves
|
|
150
|
+
existing behavior; invalid value fails fast), heuristic ledger validity,
|
|
151
|
+
and a regression fixture that mirrors the XRPL Section 01 pattern (~60
|
|
152
|
+
claims with ~5-token shared vocabulary completes via heuristic in well
|
|
153
|
+
under 30 seconds).
|
|
154
|
+
|
|
155
|
+
- **`docs/contradict-map.md`** — full CLI reference: detector modes, mode
|
|
156
|
+
announcements (verbatim strings), when-to-use-which guidance, and the
|
|
157
|
+
release thesis.
|
|
158
|
+
|
|
159
|
+
- **Handbook page** at `/handbook/contradict-map` — condensed reference
|
|
160
|
+
matching the docs page.
|
|
161
|
+
|
|
162
|
+
### Changed
|
|
163
|
+
|
|
164
|
+
- **CLI `--help`** for `contradict map` now lists the three `--detector`
|
|
165
|
+
choices.
|
|
166
|
+
- **Reference page** in the handbook updated to mention the flag and
|
|
167
|
+
link to the new contradict-map page.
|
|
168
|
+
|
|
169
|
+
### Documentation
|
|
170
|
+
|
|
171
|
+
- README status block updated to v0.3.0; version badge updated.
|
|
172
|
+
- `docs/roadmap.md` Experiment 3 entry: F-09 chain blocker noted as
|
|
173
|
+
resolved in v0.3.0 (Experiment 3 itself remains in progress; closure
|
|
174
|
+
requires a third external-domain pack).
|
|
175
|
+
- **Cross-repo:** `research-packs/docs/operator-playbook.md` updated in
|
|
176
|
+
the same release window. The earlier "clear `OLLAMA_INTERN_MODEL` to
|
|
177
|
+
force heuristic" workaround is replaced with `--detector heuristic`
|
|
178
|
+
as the canonical operator surface. The handbook mirror in this repo
|
|
179
|
+
is kept consistent with the canonical.
|
|
180
|
+
- `SHIP_GATE.md` D2 updated: version bump + tag for v0.3.0.
|
|
181
|
+
|
|
182
|
+
### Tests
|
|
183
|
+
|
|
184
|
+
- **527 total** (515 at v0.2.0 → 527 at v0.3.0, +12 from
|
|
185
|
+
`test/contradictions-detector-flag.test.ts`).
|
|
186
|
+
|
|
187
|
+
### Migration notes
|
|
188
|
+
|
|
189
|
+
No code-level migration required. Existing scripts that don't pass
|
|
190
|
+
`--detector` continue to work via `auto` mode.
|
|
191
|
+
|
|
192
|
+
For operators who previously cleared `OLLAMA_INTERN_MODEL` to force the
|
|
193
|
+
heuristic detector: that pattern still works in environments where the
|
|
194
|
+
default model isn't installed, but the flag is the canonical surface
|
|
195
|
+
and is environment-independent. Switch to `--detector heuristic` when
|
|
196
|
+
re-running narrow-topic sections; the v0.3.0 operator-playbook update
|
|
197
|
+
in `research-packs` documents the rationale.
|
|
198
|
+
|
|
5
199
|
## [0.2.0] — 2026-05-09
|
|
6
200
|
|
|
7
201
|
Tight release. Two real, tested, dogfooded improvements: `research-os pack publish`
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
-
<a href="https://github.com/mcp-tool-shop-org/research-os/releases/tag/v0.
|
|
10
|
+
<a href="https://github.com/mcp-tool-shop-org/research-os/releases/tag/v0.3.1"><img src="https://img.shields.io/badge/version-0.3.1-blue" alt="version 0.3.1"></a>
|
|
11
11
|
<a href="https://github.com/mcp-tool-shop-org/research-os/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/research-os/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
12
12
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT License"></a>
|
|
13
13
|
<img src="https://img.shields.io/badge/node-%E2%89%A520-brightgreen" alt="Node ≥20">
|
|
@@ -151,9 +151,13 @@ This is the structural alternative to *search → summarize → pretty report*.
|
|
|
151
151
|
|
|
152
152
|
## Status
|
|
153
153
|
|
|
154
|
-
**v0.
|
|
154
|
+
**v0.3.1** — published to npm as `@mcptoolshop/research-os@0.3.1`, 2026-05-09. Ships section-scoped source-floor waivers (`primary_source_waiver.section_waivers[]`) plus reviewer-side acknowledgement so a waived section-wide `source_cluster_monopoly` finding becomes a visible caveat rather than auto-routing all claims to `needs_source_repair`. Earned by Experiment 3 XRPL pack Session 2 — canonical-protocol sections (single-foundation chains, walled-garden API specs, standards-body docs) inverted the assumption that publisher diversity is a proxy for truth quality. 540/540 vitest passing. See [CHANGELOG.md](CHANGELOG.md) and [`docs/section-scoped-waivers.md`](docs/section-scoped-waivers.md).
|
|
155
155
|
|
|
156
|
-
|
|
156
|
+
**Section-scoped source waivers** — Use them when publisher diversity is structurally incompatible with the section's truth source, not when a section merely failed to find enough sources. Schema-enforced `reason` + non-empty `compensating_controls[]`. Pack policy `primary_source_waiver_allowed: false` blocks both pack-level and section-scoped waivers. The pre-v0.3.1 pack-level `min_independent_publishers: 0` workaround is now deprecated; existing frozen packs remain valid under their existing receipts. See [`docs/section-scoped-waivers.md`](docs/section-scoped-waivers.md) and the [research-packs operator playbook](https://github.com/mcp-tool-shop-org/research-packs/blob/main/docs/operator-playbook.md).
|
|
157
|
+
|
|
158
|
+
**v0.3.0** — published 2026-05-09. Shipped the `--detector <auto|heuristic|ollama-intern>` flag on `contradict map` (F-09 chain-blocker fix from Experiment 3 Session 1, XRPL pack). 527/527 vitest then. Detector selection is now an explicit operator choice instead of a state-dependent env-var dance; mode is announced visibly on every run. See [`docs/contradict-map.md`](docs/contradict-map.md).
|
|
159
|
+
|
|
160
|
+
**v0.2.0** — published 2026-05-09. Shipped `research-os pack publish` (Experiment 2) and the Pattern 2 readiness predicate fix. 515/515 vitest passing then. See [CHANGELOG.md](CHANGELOG.md). Frozen packs export to the canonical `research-packs` archive with a single command; admission contract is enforced by code, not checklist. See [`docs/pack-publish.md`](docs/pack-publish.md).
|
|
157
161
|
|
|
158
162
|
**v0.1.0** — dogfood pack frozen 2026-05-08. The pack at `research-os-packs/research-os-spec/` (sibling repo) reached freeze with 296 accepted claims across 8 sections, 17 dispositioned, 30 operator-overridden, 0 active repair blockers, 0 unresolved contradictions, all gates `synthesis_eligible=true`. Sixteen load-bearing laws cumulative. See [`docs/dogfood-proof.md`](docs/dogfood-proof.md) for the seven findings and freeze receipt fingerprints.
|
|
159
163
|
|
|
@@ -161,9 +165,9 @@ This is the structural alternative to *search → summarize → pretty report*.
|
|
|
161
165
|
|
|
162
166
|
**v1 Experiment 1 (ComfyUI workflow durability)** — CLOSED 2026-05-09. All 8 sections at Terminal A, pack frozen, archive live. See [`docs/experiment-1-proof.md`](docs/experiment-1-proof.md) and [`docs/roadmap.md`](docs/roadmap.md).
|
|
163
167
|
|
|
164
|
-
### What v0.
|
|
168
|
+
### What v0.3 is not
|
|
165
169
|
|
|
166
|
-
- Not battle-tested by external users. Two dogfood arcs have
|
|
170
|
+
- Not battle-tested by external users. Two dogfood arcs have closed — one self-referential, one external-domain — and Experiment 3 (API stability under external pressure) is in progress: pack #1 of 3 (XRPL creator-token durability) earned both the v0.3.0 `--detector` flag and the v0.3.1 section-scoped source waivers. Two more external-domain packs required for Experiment 3 closure.
|
|
167
171
|
- Not a synthesis writer. The `synth workspace` command generates the structured workspace; humans (or Cowork) write the prose against accepted claim IDs.
|
|
168
172
|
- Not API-stable under semver. v1.0.0 is an earned state, not a calendar date — see [`docs/roadmap.md`](docs/roadmap.md) for the six experiments that close the gap.
|
|
169
173
|
|