You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
P1/P2 architecture issue: Jacobian's catalog is growing through many narrowly scoped capability IDs, but the public contract has no family, maturity, deprecation, replacement, or admission model. This increases agent search cost and schema variance faster than the discovery/execution surface can absorb it.
Jacobian has intentionally chosen a compact two-tool MCP surface backed by a large runtime-defined capability catalog. That is preferable to exposing hundreds of permanent top-level tools, but it moves more responsibility onto the capability inventory:
each ID must represent a coherent reusable outcome;
nearby operations need intelligible relationships;
agents need to distinguish family variants;
contracts need stable lifecycle semantics;
superseded or overlapping operations need migrations;
new paper-driven gaps should not automatically become permanent catalog leaves.
The current CapabilityDescriptor contains an ID, version, title, description, provider, modes, schemas, tags, input/artifact kinds, relationships, visibility, and examples. It does not identify:
capability family or operation kind;
maturity/stability level;
deprecation/removal state;
replacement capability;
compatibility with earlier versions/IDs;
whether an operation is a primitive, codec, transformation, producer, verifier, lifecycle control, or benchmark-specific experiment;
the evidence/admission decision that justified a new public ID;
whether two IDs duplicate the same request/result semantics under different names.
Meanwhile, the issue/PR inventory contains a large and continuing set of new capability requests derived from individual theorem/counterexample audits. Many are legitimate reusable gaps. The architecture currently lacks a gate that separates those from one-case helpers, overlapping variants, or operations that should share a domain family contract.
Audit baseline: current main as inspected on 2026-08-10.
Concrete evidence
Catalog scale is already agent-relevant
Recent MCP issues and evaluations refer to roughly 329–348 installed capabilities. Discovery responses, unknown-ID recovery, relationships, output schemas, and skills already require explicit bounds and compaction.
#845 and #938 show that context/repeated-discovery cost can dominate mathematical execution. Adding more IDs without a catalog architecture worsens that pressure even when the two top-level tool names remain fixed.
New capability requests arrive one paper case at a time
Current issues request or recently requested reusable surfaces for, among others:
Many of these are mathematically sound requests. Their volume demonstrates that “add one bounded operation pair” cannot be the only long-term catalog design rule.
Leaf fixes repeatedly adjust vocabulary and handoff
PRs #929, #934, #936, #986, and #992 improve examples, tags, relationships, labels, or previews for individual capabilities after model traces expose usability failures.
Those are valuable regressions, but a catalog with hundreds of unrelated leaf conventions forces agents to learn each request/result vocabulary independently.
Capability identity has no public lifecycle
CapabilityDescriptor.version can change while the stable-looking capability_id remains. There is no typed field such as:
The managed skill nevertheless treats selected IDs as “stable producers” and bypasses discovery. #1031 separately tracks binding execution to the selected schema/version, but catalog-level retirement/replacement remains undefined.
Root cause
The capability ID currently carries too many responsibilities:
public API identity
implementation namespace
discovery term
mathematical taxonomy leaf
version lineage
composition endpoint
provider registration key
At the same time, the repository has a useful but informal principle that each capability should expose one coherent mathematical outcome. That principle is not represented as a reviewable admission contract or machine-checkable catalog structure.
The resulting anti-pattern is:
one observed missing workflow
-> one new permanent capability ID/schema/example/tag set
-> one more independent object for agents and maintainers
without an explicit decision among:
extend an existing family
compose existing primitives
add a reusable new primitive
add a codec/representation boundary
add an independent verifier
keep the implementation evaluation-only
reject a benchmark-specific helper
Proposed architecture
1. Add typed capability-family metadata
Introduce a stable family/operation classification owned by the domain, for example:
Roles are descriptive and should not prescribe strategy. Effect metadata remains separately owned by #1034.
A family does not require one generic schema for mathematically different operations. It provides stable grouping, shared conventions, and version lineage where those are real.
Do not silently remove an ID or keep incompatible semantics under the same ID/version.
Pre-stable project status does not eliminate the need for explicit agent/client migration when packaged skills, cached contracts, artifacts, and open PRs refer to old IDs.
3. Establish a capability admission record
A new public ID should link a small reviewed admission record answering:
What coherent mathematical outcome does it expose?
Which existing capabilities/families were considered?
Why composition is insufficient or unsafe for the observed tasks?
Is the operation reusable across at least two plausible task families, or is it a necessary representation/codec/checker boundary?
What exact input/output/assurance/resource scope is stable enough to publish?
Does it duplicate an existing backend wrapper under another mathematical name?
What independent checker or assurance ceiling applies?
What model-in-the-loop or contract evidence justifies agent visibility?
What is the migration plan if the experiment is not retained?
This record can be concise and machine-linked. It should not require a full benchmark for obvious deterministic primitives such as a standard codec, but it should prevent one-case helpers from becoming permanent by default.
4. Prefer domain families over generic universal operations
Consolidation must not create a universal solver.solve, generic expression language, or untyped “do math” schema.
Good consolidation examples are domain-owned shared representations and operation families:
one canonical labelled graph contract reused by graph transforms/invariants;
one exact finite-table contract reused by bounded probability operations;
one simple algebraic-field element representation reused by arithmetic/matrix operations;
one replay-verifier envelope generated from producer contracts;
codec operations separated from optimization/invariant operations.
Keep distinct semantics distinct even when the backend is the same.
5. Make variants and relationships discoverable structurally
math.find should be able to show:
family
variant dimensions
producer/verifier pair
superseded/replacement status
input/output compatibility
without listing every nearby ID as free-form prose.
update generated guidance from the versioned manifest;
add compatibility/rejection tests;
remove only after supported clients/benchmarks migrate.
Do not expose multiple equivalent active IDs indefinitely merely to preserve old model prompts.
8. Keep evaluation-only experiments outside production catalog
Prototype transforms, reasoning workflows, observation tools, and one-study treatments should remain in benchmark/harness code unless they pass the admission gate.
PRs #928, #957, and the removal of production reasoning workflows provide good examples of preserving evidence without shipping speculative product surface.
Acceptance criteria
Every visible capability belongs to a typed family or explicitly declares why it is a standalone primitive.
Every descriptor has a finite lifecycle/maturity state.
Deprecated capabilities identify replacements and remain searchable as deprecated rather than silently changing semantics.
New public capability PRs include a concise admission record addressing reuse, composition, assurance, bounds, and alternatives.
Benchmark-specific helpers and failed experimental surfaces remain outside production catalog.
Common producer/verifier, codec, labelled-object, and field/table conventions are represented as family-owned contracts where mathematically valid.
Catalog health CI reports duplicate schemas, missing relationships/examples/facets, stale guidance references, and contract-size growth.
Agents can inspect family/variant/replacement metadata without loading the full catalog.
Consolidation does not introduce an untyped generic solver or mandatory workflow.
Capability/artifact/checker version identity and migration remain fail closed.
Suggested pilot
Apply the model to three clusters with different pressures:
Priority
P1/P2 architecture issue: Jacobian's catalog is growing through many narrowly scoped capability IDs, but the public contract has no family, maturity, deprecation, replacement, or admission model. This increases agent search cost and schema variance faster than the discovery/execution surface can absorb it.
Area
Capability catalog, operation granularity, domain contracts, capability IDs, versioning/deprecation, plugin admission, model routing, maintenance.
Summary
Jacobian has intentionally chosen a compact two-tool MCP surface backed by a large runtime-defined capability catalog. That is preferable to exposing hundreds of permanent top-level tools, but it moves more responsibility onto the capability inventory:
The current
CapabilityDescriptorcontains an ID, version, title, description, provider, modes, schemas, tags, input/artifact kinds, relationships, visibility, and examples. It does not identify:Meanwhile, the issue/PR inventory contains a large and continuing set of new capability requests derived from individual theorem/counterexample audits. Many are legitimate reusable gaps. The architecture currently lacks a gate that separates those from one-case helpers, overlapping variants, or operations that should share a domain family contract.
Audit baseline: current
mainas inspected on 2026-08-10.Concrete evidence
Catalog scale is already agent-relevant
Recent MCP issues and evaluations refer to roughly 329–348 installed capabilities. Discovery responses, unknown-ID recovery, relationships, output schemas, and skills already require explicit bounds and compaction.
#845 and #938 show that context/repeated-discovery cost can dominate mathematical execution. Adding more IDs without a catalog architecture worsens that pressure even when the two top-level tool names remain fixed.
New capability requests arrive one paper case at a time
Current issues request or recently requested reusable surfaces for, among others:
Many of these are mathematically sound requests. Their volume demonstrates that “add one bounded operation pair” cannot be the only long-term catalog design rule.
Leaf fixes repeatedly adjust vocabulary and handoff
PRs #929, #934, #936, #986, and #992 improve examples, tags, relationships, labels, or previews for individual capabilities after model traces expose usability failures.
Those are valuable regressions, but a catalog with hundreds of unrelated leaf conventions forces agents to learn each request/result vocabulary independently.
Capability identity has no public lifecycle
CapabilityDescriptor.versioncan change while the stable-lookingcapability_idremains. There is no typed field such as:The managed skill nevertheless treats selected IDs as “stable producers” and bypasses discovery. #1031 separately tracks binding execution to the selected schema/version, but catalog-level retirement/replacement remains undefined.
Root cause
The capability ID currently carries too many responsibilities:
At the same time, the repository has a useful but informal principle that each capability should expose one coherent mathematical outcome. That principle is not represented as a reviewable admission contract or machine-checkable catalog structure.
The resulting anti-pattern is:
without an explicit decision among:
Proposed architecture
1. Add typed capability-family metadata
Introduce a stable family/operation classification owned by the domain, for example:
Possible finite roles:
Roles are descriptive and should not prescribe strategy. Effect metadata remains separately owned by #1034.
A family does not require one generic schema for mathematically different operations. It provides stable grouping, shared conventions, and version lineage where those are real.
2. Define a public lifecycle model
Add finite descriptor state, for example:
with optional:
Do not silently remove an ID or keep incompatible semantics under the same ID/version.
Pre-stable project status does not eliminate the need for explicit agent/client migration when packaged skills, cached contracts, artifacts, and open PRs refer to old IDs.
3. Establish a capability admission record
A new public ID should link a small reviewed admission record answering:
This record can be concise and machine-linked. It should not require a full benchmark for obvious deterministic primitives such as a standard codec, but it should prevent one-case helpers from becoming permanent by default.
4. Prefer domain families over generic universal operations
Consolidation must not create a universal
solver.solve, generic expression language, or untyped “do math” schema.Good consolidation examples are domain-owned shared representations and operation families:
Keep distinct semantics distinct even when the backend is the same.
5. Make variants and relationships discoverable structurally
math.findshould be able to show:without listing every nearby ID as free-form prose.
This should compose with:
6. Add catalog health metrics and CI gates
Record at least:
Metrics guide review; they are not automatic proof that a capability should be deleted.
7. Define retirement and consolidation workflows
When two operations are consolidated:
Do not expose multiple equivalent active IDs indefinitely merely to preserve old model prompts.
8. Keep evaluation-only experiments outside production catalog
Prototype transforms, reasoning workflows, observation tools, and one-study treatments should remain in benchmark/harness code unless they pass the admission gate.
PRs #928, #957, and the removal of production reasoning workflows provide good examples of preserving evidence without shipping speculative product surface.
Acceptance criteria
Suggested pilot
Apply the model to three clusters with different pressures:
For each cluster:
Use the result to refine the family contract before catalog-wide migration.
Related work
Non-goals