Skip to content

Commit 96c1a18

Browse files
Remove CapabilityMode entirely from the codebase
Delete the CapabilityMode enum, all mode/modes fields from capability contracts (Descriptor, Request, Result, InvocationExample, DiscoveryMatch), mode-based policy filtering (allowed_modes/denied_modes), mode stamping in dispatch, mode from telemetry logging, and assurance_ceiling from MCP projections. Checkers are separate catalog IDs, not a mode switch. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1 parent 7eb5da6 commit 96c1a18

144 files changed

Lines changed: 19 additions & 789 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/jacobian/adapters/mcp/guidance.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@
3838
3939
Forms:
4040
- `query`: plain-language mathematical outcome (compact tool cards).
41-
- Optional `domain` filter; `limit` 120 (default 5).
41+
- Optional `domain` filter; `limit` 1-20 (default 5).
4242
- Omit arguments to browse; follow `next_cursor` with the same filters to continue.
4343
- Ranking is deterministic lexical retrieval; matches are not recommendations.
4444
- `capability_id`: exact inspect (SUMMARY / CONTRACT / FULL views).
4545
46-
Checker tools are separate IDs (often `*.verify`), not a mode switch on producers.
46+
Checker tools are separate IDs (often `*.verify`), not a switch on producers.
4747
4848
Examples:
4949
- `{"query":"compute an exact matrix determinant","domain":"matrix","limit":3}`
@@ -58,7 +58,7 @@
5858
5959
Ordinary tools return calculations. Independent checking uses a separate checker
6060
tool ID (for example `polynomial.identity.verify` or `case.partition.finite.verify`),
61-
not a mode on the producer. Failed or incomplete runs are not mathematical conclusions.
61+
not a switch on the producer. Failed or incomplete runs are not mathematical conclusions.
6262
6363
Examples:
6464
- `{"capability_id":"integer.compute.gcd","payload":{"left":"84","right":"30"}}`

src/jacobian/adapters/mcp/projections.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
CapabilityDiscoveryRemoveUnknownDomainRecoveryPath,
2626
CapabilityDiscoveryRequest,
2727
CapabilityInputKind,
28-
CapabilityMode,
2928
CapabilityRequest,
3029
CapabilityResult,
3130
)
@@ -216,9 +215,6 @@ def _discovery_operation_card(
216215
"produced_artifact_types": list(descriptor.produced_artifact_types),
217216
"output_schema_summary": _output_schema_summary(descriptor.output_schema),
218217
"scope": "EXACT_SUPPLIED_INPUT_OR_CLAIM",
219-
"assurance_ceiling": (
220-
"VERIFIED" if CapabilityMode.VERIFY in descriptor.modes else "COMPUTED"
221-
),
222218
"provider_availability": (
223219
runtime.availability.value if runtime is not None else "UNKNOWN"
224220
),

src/jacobian/adapters/mcp/tooling.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
)
2121
from jacobian.canonical import canonicalize_json
2222
from jacobian.contracts.capabilities import (
23-
CapabilityMode,
2423
CapabilityRequest,
2524
CapabilityResult,
2625
)
@@ -362,7 +361,6 @@ def _response_size(value: Any) -> int:
362361
def _log_capability_attempt(
363362
*,
364363
capability_id: str,
365-
mode: CapabilityMode,
366364
started: float,
367365
argument_digest: str,
368366
request_digest: str,
@@ -387,7 +385,7 @@ def _log_capability_attempt(
387385
codes = ",".join(diagnostic_codes[:8]) or "none"
388386
_LOGGER.info(
389387
"MCP capability attempt request_digest=%s trace_digest=%s trace_source=%s "
390-
"capability_id=%s capability_version=%s mode=%s "
388+
"capability_id=%s capability_version=%s "
391389
"execution_status=%s assurance=%s diagnostic_codes=%s "
392390
"attempt_duration_ms=%.3f operation_runtime_ms=%s "
393391
"response_bytes=%d argument_digest=%s",
@@ -396,7 +394,6 @@ def _log_capability_attempt(
396394
trace_source,
397395
capability_id,
398396
capability_version,
399-
mode.value,
400397
execution_status or "ERROR",
401398
assurance,
402399
codes,
@@ -412,7 +409,6 @@ async def _invoke_capability_attempt(
412409
*,
413410
capability_id: str,
414411
payload: dict[str, Any],
415-
mode: CapabilityMode | None = None,
416412
ctx: Any | None,
417413
) -> CapabilityResult:
418414
started = time.monotonic()
@@ -425,10 +421,8 @@ async def _invoke_capability_attempt(
425421
trace_digest, trace_source = _request_trace_digest(ctx)
426422
request_digest = _request_id_digest(ctx)
427423
cancellation_event = threading.Event()
428-
# mode is stamped from the tool descriptor at dispatch; clients do not choose it.
429424
request = CapabilityRequest(
430425
capability_id=capability_id,
431-
mode=mode,
432426
input=payload,
433427
)
434428
try:
@@ -441,15 +435,9 @@ async def _invoke_capability_attempt(
441435
)
442436
except asyncio.CancelledError as exc:
443437
drained = getattr(exc, "drained_result", None)
444-
log_mode = (
445-
drained.mode
446-
if isinstance(drained, CapabilityResult)
447-
else CapabilityMode.EXPLORE
448-
)
449438
if isinstance(drained, CapabilityResult):
450439
_log_capability_attempt(
451440
capability_id=capability_id,
452-
mode=log_mode,
453441
started=started,
454442
argument_digest=argument_digest,
455443
request_digest=request_digest,
@@ -460,7 +448,6 @@ async def _invoke_capability_attempt(
460448
else:
461449
_log_capability_attempt(
462450
capability_id=capability_id,
463-
mode=log_mode,
464451
started=started,
465452
argument_digest=argument_digest,
466453
request_digest=request_digest,
@@ -473,7 +460,6 @@ async def _invoke_capability_attempt(
473460
except Exception:
474461
_log_capability_attempt(
475462
capability_id=capability_id,
476-
mode=CapabilityMode.EXPLORE,
477463
started=started,
478464
argument_digest=argument_digest,
479465
request_digest=request_digest,
@@ -485,7 +471,6 @@ async def _invoke_capability_attempt(
485471
raise
486472
_log_capability_attempt(
487473
capability_id=capability_id,
488-
mode=result.mode,
489474
started=started,
490475
argument_digest=argument_digest,
491476
request_digest=request_digest,

src/jacobian/adapters/mcp/tools.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ class _CapabilityDiscoveryOperationCard(CapabilityDiscoveryMatch):
8484
output_schema_summary: _SchemaSummary
8585
input_schema_summary: _SchemaSummary | None = None
8686
scope: Literal["EXACT_SUPPLIED_INPUT_OR_CLAIM"]
87-
assurance_ceiling: Literal["COMPUTED", "VERIFIED"]
8887
provider_availability: CapabilityProviderAvailability | Literal["UNKNOWN"]
8988
related_capabilities: tuple[_RelatedCapability, ...]
9089
invocation_example: _DiscoveryInvocationExample | None = None
@@ -315,14 +314,12 @@ def _find_text_projection(response: dict[str, Any]) -> dict[str, Any]:
315314
"capability_id",
316315
"title",
317316
"description",
318-
"modes",
319317
"accepted_input_kinds",
320318
"accepted_artifact_types",
321319
"produced_artifact_types",
322320
"input_schema_summary",
323321
"output_schema_summary",
324322
"scope",
325-
"assurance_ceiling",
326323
"provider_availability",
327324
"related_capabilities",
328325
"invocation_example",
@@ -354,7 +351,6 @@ def _find_text_projection(response: dict[str, Any]) -> dict[str, Any]:
354351
"capability_id",
355352
"title",
356353
"description",
357-
"modes",
358354
"accepted_input_kinds",
359355
"accepted_artifact_types",
360356
"produced_artifact_types",
@@ -677,7 +673,6 @@ async def capability_invoke(
677673
active_runtime,
678674
capability_id=capability_id,
679675
payload=payload,
680-
mode=None,
681676
ctx=ctx,
682677
)
683678
result = _bounded_run_result(active_runtime, result)

src/jacobian/atomic_capabilities.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
CapabilityCompleteness,
2121
CapabilityCompletenessStatus,
2222
CapabilityDescriptor,
23-
CapabilityMode,
2423
CapabilityProviderAvailability,
2524
CapabilityRequest,
2625
CapabilityResult,
@@ -76,7 +75,6 @@ def __init__(
7675
capability_id: str,
7776
title: str,
7877
description: str,
79-
modes: tuple[CapabilityMode, ...],
8078
input_schema: dict[str, Any],
8179
output_schema: dict[str, Any],
8280
invoke: Callable[[dict[str, Any]], Any],
@@ -97,7 +95,6 @@ def __init__(
9795
description=description,
9896
provider=provider,
9997
provider_runtime=known_provider_runtime(provider, features=tags),
100-
modes=modes,
10198
input_schema=input_schema,
10299
output_schema=output_schema,
103100
read_only=read_only,
@@ -148,7 +145,6 @@ def invoke(self, request: CapabilityRequest) -> CapabilityResult:
148145
return CapabilityResult(
149146
capability_id=self.descriptor.capability_id,
150147
capability_version=self.descriptor.version,
151-
mode=request.mode,
152148
execution=execution,
153149
output=output,
154150
scope=scope,
@@ -184,7 +180,6 @@ def _adapter(**kwargs: Any) -> AtomicServiceAdapter:
184180
capability_id="artifact.put",
185181
title="Store a schema-validated artifact",
186182
description="Materialize one immutable artifact with explicit lineage.",
187-
modes=(CapabilityMode.EXPLORE,),
188183
input_schema=_schema(
189184
{
190185
"schema_uri": _ARTIFACT_URI,
@@ -214,7 +209,6 @@ def _adapter(**kwargs: Any) -> AtomicServiceAdapter:
214209
capability_id="claim.validate",
215210
title="Validate a claim against one plugin",
216211
description="Check claim schema, semantics, and declared plugin capabilities.",
217-
modes=(CapabilityMode.EXPLORE,),
218212
input_schema=_schema(
219213
{"claim_uri": _ARTIFACT_URI, "plugin_id": _ARTIFACT_URI},
220214
required=("claim_uri", "plugin_id"),
@@ -228,7 +222,6 @@ def _adapter(**kwargs: Any) -> AtomicServiceAdapter:
228222
capability_id="evaluate.batch",
229223
title="Evaluate candidates",
230224
description="Run a plugin evaluator over a bounded batch without verification.",
231-
modes=(CapabilityMode.EXPLORE,),
232225
input_schema=_schema(
233226
{
234227
"claim_uri": _ARTIFACT_URI,
@@ -272,7 +265,6 @@ def _adapter(**kwargs: Any) -> AtomicServiceAdapter:
272265
capability_id="witness.find",
273266
title="Find one witness",
274267
description="Search for a witness or a bounded no-witness certificate proposal.",
275-
modes=(CapabilityMode.EXPLORE,),
276268
input_schema=_schema(
277269
{
278270
"claim_uri": _ARTIFACT_URI,
@@ -312,7 +304,6 @@ def _adapter(**kwargs: Any) -> AtomicServiceAdapter:
312304
capability_id="witness.verify",
313305
title="Verify one witness",
314306
description="Replay one witness with an explicitly selected authorized checker.",
315-
modes=(CapabilityMode.VERIFY,),
316307
input_schema=_verification_schema(
317308
{
318309
"claim_uri": _ARTIFACT_URI,
@@ -332,7 +323,6 @@ def _adapter(**kwargs: Any) -> AtomicServiceAdapter:
332323
capability_id="certificate.verify",
333324
title="Verify one certificate",
334325
description="Replay one certificate with a compatible authorized checker.",
335-
modes=(CapabilityMode.VERIFY,),
336326
input_schema=_verification_schema(
337327
{"certificate_uri": _ARTIFACT_URI, "checker_id": _CHECKER_URI},
338328
required=("certificate_uri",),
@@ -347,7 +337,6 @@ def _adapter(**kwargs: Any) -> AtomicServiceAdapter:
347337
capability_id="shrink.run",
348338
title="Shrink a candidate or witness",
349339
description="Apply bounded reductions and replay each accepted preservation claim.",
350-
modes=(CapabilityMode.EXPLORE,),
351340
input_schema=_schema(
352341
{
353342
"target_kind": {"enum": ["candidate", "witness"]},

src/jacobian/atomic_domain_capabilities.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from jacobian.atomic_capability_builders import AdapterFactory, SchemaBuilder
88
from jacobian.contracts.capabilities import (
99
CapabilityAssuranceLevel,
10-
CapabilityMode,
1110
)
1211
from jacobian.contracts.conjectures import ParameterRegion
1312
from jacobian.contracts.polytope import PolytopeSeparateRequest, PolytopeSeparateResult
@@ -40,7 +39,6 @@ def build_domain_adapters(
4039
"Materialize a plugin-proposed transformation and its verification "
4140
"obligation."
4241
),
43-
modes=(CapabilityMode.EXPLORE,),
4442
input_schema=schema(
4543
{
4644
"source_uri": artifact_uri,
@@ -92,7 +90,6 @@ def build_domain_adapters(
9290
"Replay one transformation relation with its compatible authorized "
9391
"checker."
9492
),
95-
modes=(CapabilityMode.VERIFY,),
9693
input_schema=schema(
9794
{"transformation_uri": artifact_uri},
9895
required=("transformation_uri",),
@@ -109,7 +106,6 @@ def build_domain_adapters(
109106
description=(
110107
"Compute exact membership evidence or a separator; replay is separate."
111108
),
112-
modes=(CapabilityMode.EXPLORE,),
113109
input_schema=schema(
114110
{
115111
"point_uri": artifact_uri,
@@ -143,7 +139,6 @@ def build_domain_adapters(
143139
"Replay a record bound to an immutable region before marking it "
144140
"verified."
145141
),
146-
modes=(CapabilityMode.VERIFY,),
147142
input_schema=schema(
148143
{
149144
"subject_uri": artifact_uri,

src/jacobian/atomic_experiment_capabilities.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
from jacobian.atomic_capability_builders import AdapterFactory, SchemaBuilder
1111
from jacobian.contracts.capabilities import (
1212
CapabilityAssuranceLevel,
13-
CapabilityMode,
1413
)
1514
from jacobian.contracts.discovery import (
1615
ExperimentCancelResult,
@@ -48,7 +47,6 @@ def build_experiment_adapters(
4847
"Compute a plugin-defined canonical representative without "
4948
"self-certification."
5049
),
51-
modes=(CapabilityMode.EXPLORE,),
5250
input_schema=schema(
5351
{
5452
"structure_uri": artifact_uri,
@@ -74,7 +72,6 @@ def build_experiment_adapters(
7472
"Start one durable candidate-enumeration experiment; it cannot "
7573
"self-certify."
7674
),
77-
modes=(CapabilityMode.EXPLORE,),
7875
input_schema=schema(
7976
{
8077
"claim_uri": artifact_uri,
@@ -102,7 +99,6 @@ def build_experiment_adapters(
10299
"Read the durable state and accounting of one enumeration or "
103100
"search experiment."
104101
),
105-
modes=(CapabilityMode.EXPLORE,),
106102
input_schema=schema(
107103
{"experiment_uri": experiment_uri},
108104
required=("experiment_uri",),
@@ -120,7 +116,6 @@ def build_experiment_adapters(
120116
description=(
121117
"Wait for a bounded interval and return the latest experiment snapshot."
122118
),
123-
modes=(CapabilityMode.EXPLORE,),
124119
input_schema=schema(
125120
{
126121
"experiment_uri": experiment_uri,
@@ -148,7 +143,6 @@ def build_experiment_adapters(
148143
description=(
149144
"Request cancellation of one running enumeration or search experiment."
150145
),
151-
modes=(CapabilityMode.EXPLORE,),
152146
input_schema=schema(
153147
{"experiment_uri": experiment_uri},
154148
required=("experiment_uri",),

0 commit comments

Comments
 (0)