Skip to content

Commit e092e5a

Browse files
Clean up stale mode references in docs and tests
Update architecture/blueprint/tools docs to reflect completed CapabilityMode removal. Rename test_descriptors_have_correct_ids_and_modes to drop "modes". Fix stale EXPLORE comment in polynomial interval test. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1 parent 96c1a18 commit e092e5a

8 files changed

Lines changed: 12 additions & 30 deletions

File tree

AGENTS.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,8 @@ HEURISTIC/COMPUTED/VERIFIED slogans. Optional envelope fields may exist on the
3030
wire during migration; do not design new behavior around them as the product.
3131

3232
**Checker tools are additional tools.** Independent check is a **separate
33-
catalog ID** (e.g. `….verify`, `lean.check`), not a mode on the producer. **No
34-
dual-mode tools.** Legacy `mode` / dual-mode descriptors:
35-
[#1143](https://github.com/morluto/jacobian/issues/1143).
33+
catalog ID** (e.g. `….verify`, `lean.check`), not a role on the producer. **No
34+
dual-mode tools.**
3635

3736
- Server: typed contracts, resource bounds, catalog install, checker
3837
authorization.

docs/explanation/architecture.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,8 @@ agent
1919

2020
Ordinary tools return **calculations** (values) plus execution status. Checker
2121
tools are **additional catalog IDs** that return a check **verdict**; they are
22-
never a second mode on the same tool. Independent checkers are
23-
operator-authorized packages, not self-certified producer success. Legacy
24-
`mode` / dual-mode descriptors are tech debt
25-
([#1143](https://github.com/morluto/jacobian/issues/1143)).
22+
never a second role on the same tool. Independent checkers are
23+
operator-authorized packages, not self-certified producer success.
2624

2725
Models, search algorithms, and domain solvers may be heuristic or incomplete.
2826
That does not change the product rule: return the math; use a separate tool
@@ -111,8 +109,7 @@ math.run
111109
- Checker tools: **separate IDs**; verdict from operator-authorized independent
112110
replay only.
113111
- Timeout, cancel, error, invalid input: non-conclusions.
114-
- No new dual-mode tools; split leftovers
115-
([#1143](https://github.com/morluto/jacobian/issues/1143)).
112+
- No dual-mode tools; checkers are separate catalog IDs.
116113

117114
One `math.run` may call several backends only when they implement **one**
118115
agent-visible outcome.

docs/explanation/product-blueprint.md

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,8 @@ share an ID with the producer.
9898

9999
Rules:
100100

101-
- **No dual-mode tools.** One ID is not both “compute X” and “verify X.”
102-
- **No explore/verify research modes** as product design. Legacy wire `mode`
103-
fields are scheduled for removal
104-
([#1143](https://github.com/morluto/jacobian/issues/1143)).
101+
- **No dual-mode tools.** One ID is not both "compute X" and "verify X."
102+
- **No explore/verify research modes** as product design.
105103
- **Failed or incomplete runs are not mathematical conclusions.**
106104
- **Producers do not self-certify** as independently verified theorems.
107105

@@ -188,9 +186,6 @@ Illustrative catalog entries (not a closed ontology):
188186
Example composition: put or compute values → search → optionally run
189187
`witness.verify` on a found witness. Two tools, not one dual-mode tool.
190188

191-
Dual-mode leftovers (one ID advertising both compute and verify) are tech debt
192-
to split; do not add more.
193-
194189
## Local and remote hosts
195190

196191
The local Codex host uses STDIO. It exposes `capability://catalog`,

docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ read the explanations for design rationale.
99
Jacobian is a **toolbox of atomic math tools** for AI agents: find them with
1010
`math.find`, run them with `math.run`, get **mathematical results**, and
1111
compose those values across turns. Checker tools are optional **additional**
12-
catalog IDs—not dual-mode producers. Catalog entries are often still called
12+
catalog IDs—separate from producers. Catalog entries are often still called
1313
*capabilities* in the API. The [product model](explanation/product-blueprint.md)
1414
and [Search and execute](explanation/architecture.md#search-and-execute) define
1515
the contract.

docs/reference/tools.md

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,12 @@ descriptor.
4141
3. Execution status as above.
4242

4343
There are **no dual-mode tools** in the product model: one ID is not both
44-
compute X and independently verify X. Use two IDs (e.g.
44+
"compute X" and "independently verify X." Use two IDs (e.g.
4545
`polynomial.compute.gcd` and `polynomial.gcd.verify`).
4646

4747
Failed or incomplete runs are not mathematical conclusions. A successful
4848
ordinary run is a value, not a self-certified theorem.
4949

50-
### Legacy wire (migration)
51-
52-
Until [#1143](https://github.com/morluto/jacobian/issues/1143):
53-
54-
- `mode` (`EXPLORE` | `VERIFY`) may still appear on `math.run` / find filters.
55-
- Envelope fields such as `assurance` may still be present.
56-
- Do not design new tools or agent guidance around them.
57-
- Split any remaining dual-mode descriptors into two tools.
58-
5950
Domain adapters validate the full Pydantic request before work. JSON Schema is
6051
for discovery; Pydantic owns cross-field rules.
6152

src/jacobian/adapters/mcp/tools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -667,7 +667,7 @@ async def capability_invoke(
667667
*,
668668
ctx: Context[AppState, Any],
669669
) -> CapabilityRunToolResult:
670-
"""Run one math tool. Role comes from the tool ID, not a mode switch."""
670+
"""Run one math tool. Role comes from the tool ID."""
671671
with _runtime(ctx) as active_runtime:
672672
result = await _invoke_capability_attempt(
673673
active_runtime,

tests/boundary/providers/lean/test_lean_statement_capabilities.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ def test_compare_rejects_forbidden_statement(tmp_path: Path) -> None:
520520
# ---------------------------------------------------------------------------
521521

522522

523-
def test_descriptors_have_correct_ids_and_modes(tmp_path: Path) -> None:
523+
def test_descriptors_have_correct_ids(tmp_path: Path) -> None:
524524
propose, compare = _build_adapters(tmp_path)
525525

526526
assert propose.descriptor.capability_id == "lean.statement.propose"

tests/domain/polynomial/test_polynomial_interval_capabilities.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ def test_verify_capability_confirms_a_valid_enclosure(installation) -> None:
129129
enclose, verify = adapters
130130
assert verify is not None
131131

132-
# First compute the enclosure via EXPLORE, then verify the claimed values.
132+
# First compute the enclosure, then verify the claimed values.
133133
enclose_result = enclose.invoke(
134134
CapabilityRequest(
135135
capability_id="polynomial.interval.enclose",

0 commit comments

Comments
 (0)