Conversation
Pmat-Ticket: PMAT-3954 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…3954) FALSIFY-MCP-TOOLSET-001: ToolIndex::from_entries and AprMcpServer::with_tools do not exist; the test drives serve_stream with a one-tool index (initialize names the caller, tools/list is exactly its tools, tools/call reaches its dispatch through the worker, an unregistered tool errors, a duplicate name is refused). Pmat-Ticket: PMAT-3954 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… behind the default apr-tools feature A downstream server (arbiter, paiml/infra#917) now serves ITS OWN tools on this crate: ToolIndex::from_entries (owned String keys, a duplicate name refused) + AprMcpServer::with_tools(name, version, Arc<ToolIndex>). initialize answers the caller's serverInfo; tools/list, the sync call and every worker thread dispatch through the server's own index (the worker seam now takes &ToolIndex, so FALSIFY-MCP-DRAIN-005 still drives the real path). With default-features = false, features = ["native"] the crate depends on serde + serde_json only: serve_stream/run_stdio return std::io::Result (anyhow removed); inventory, nix and the serde_yaml build-dependency are optional under apr-tools, the codegen in build.rs runs only with it, and apr's tool modules, schemas and their tests are gated. apr-cli names apr-tools explicitly. Shape settled by a 3-lane plan grill (3/3 FAIL on the first plan; every consensus finding adopted). FALSIFY-MCP-TOOLSET-001 5/5 with and without default features; cargo test -p aprender-mcp green (4 full lib runs; one pre-existing ETXTBSY flake filed as #4020); clippy -D warnings clean on aprender-mcp (both feature sets, all targets) and apr-cli. Pmat-Ticket: PMAT-3954 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
Contributor
Author
|
quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-3954",
"head": "7b02c44c7c6be6176c279589fae4cef44b8f5b24",
"width": 3,
"executor": "agy",
"agreed": false,
"auto_merge": {
"checked": true,
"was_armed": false,
"disarmed": false,
"note": "auto-merge not armed"
},
"lanes": [
{
"lane": 1,
"verdict": "PASS",
"findings": 5
},
{
"lane": 2,
"verdict": "FAIL",
"findings": 2
},
{
"lane": 3,
"verdict": "PASS",
"findings": 4
}
]
} |
…r-tools; roadmap aggregate regenerated (quorum round 1, lane 2) Lane 2 measured `cargo test -p aprender-mcp --doc` failing (E0433 anyhow): the earlier green claim came from --lib/--tests runs that skip doctests. Now: the full `cargo test -p aprender-mcp` exits 0, and --doc passes with and without default features. guard-tree: docs/roadmaps/roadmap.yaml regenerated by `make roadmap-aggregate`. Pmat-Ticket: PMAT-3954 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
quorum-review (AD-04): three PASS — agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-3954",
"head": "43302cd1e04d6b6ba11cd076cddefdf1e612b082",
"width": 3,
"executor": "agy",
"agreed": true,
"auto_merge": {
"checked": true,
"was_armed": false,
"disarmed": false,
"note": "auto-merge not armed"
},
"lanes": [
{
"lane": 1,
"verdict": "PASS",
"findings": 6
},
{
"lane": 2,
"verdict": "PASS",
"findings": 0
},
{
"lane": 3,
"verdict": "PASS",
"findings": 0
}
]
} |
noahgift
enabled auto-merge
September 23, 2026 13:49
12 tasks
This was referenced Sep 23, 2026
noahgift
added this pull request to the merge queue
Sep 23, 2026
Any commits made after this event will not be merged.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #3954.
keep-open: #4020 pre-existing ETXTBSY flake in a subprocess test this PR does not touch; filed separately
Why. arbiter (paiml/infra#917, ARBITER-001 row I2-2) has to serve its own MCP tools on aprender-mcp. Before this PR,
AprMcpServercould serve only apr's tools:inventorybuilt at link time;initializeanswered the constSERVER_NAME;What.
ToolIndex::from_entries(Vec<(ToolDefinition, DispatchFn)>) -> Result<_, String>. Keys are ownedStrings, and a duplicate name is refused.AprMcpServer::with_tools(name, version, Arc<ToolIndex>).initialize,tools/list, the sync call and every worker thread dispatch through the server's own index. The worker seam now takes&ToolIndex, so FALSIFY-MCP-DRAIN-005 anddefault_worker_dispatch_is_the_real_tool_dispatcherstill exercise the real path.serve_stream/run_stdioreturnstd::io::Result, and anyhow is removed.apr-toolsgates inventory, nix and serde_yaml (all optional now), the build.rs codegen,schemas, apr's tool modules, and their tests. apr-cli namesapr-toolsexplicitly.default-features = false, features = ["native"], the normal-dependency tree is serde and serde_json plus their own dependencies.Design. A 3-lane plan grill (three distinct gemini models) returned 3/3 FAIL on the first plan. Every consensus finding is adopted here: the anyhow leak, the worker path bypassing the index, the
&'static strkey, the unconditional serde_yaml build-dependency, nix not being optional,tools/argsneeding to stay ungated, and test gating.Evidence.
ToolIndex::from_entriesandAprMcpServer::with_toolsdon't exist (E0599).FALSIFY-MCP-TOOLSET-001(tests/falsify_toolset_generic.rs): 5/5 with and without default features. It checks that serverInfo is the caller's, tools/list is exactly the caller's tools, tools/call reaches the caller's function through the worker, an unregistered tool errors, and a duplicate name is refused.cargo test -p aprender-mcp: green on 4 full lib runs and the full--testsrun. One ETXTBSY flake appeared on the first run; it's pre-existing and filed as falsify_2384_run_apr_executes_the_resolved_binary is flaky: ETXTBSY (Text file busy) under parallel lib tests #4020.cargo clippy -D warnings: clean on aprender-mcp (both feature sets, all targets) and apr-cli.cargo metadata --locked: rc 0 at the root and incrates/facades.After merge: arbiter can consume this only from a published aprender-mcp. The release is the operator's.
Pmat-Ticket: PMAT-3954
🤖 Generated with Claude Code