diff --git a/src/adapters/to_mcp.rs b/src/adapters/to_mcp.rs index af4fc86..e9c67c3 100644 --- a/src/adapters/to_mcp.rs +++ b/src/adapters/to_mcp.rs @@ -1138,7 +1138,7 @@ mod tests { .collect(); let mut args = Map::new(); args.insert("calls".to_string(), Value::Array(calls)); - let dispatch_spine = dispatch(registry, provider()); + let dispatch_spine = dispatch(registry); let gateway = ToMcpGateway::new(Arc::clone(&dispatch_spine)); let result = invoke_tool(&gateway, "batch", Some(args), None).await; @@ -1176,7 +1176,7 @@ mod tests { .collect(); let mut args = Map::new(); args.insert("calls".to_string(), Value::Array(calls)); - let dispatch_spine = dispatch(registry, provider()); + let dispatch_spine = dispatch(registry); let gateway = ToMcpGateway::new(Arc::clone(&dispatch_spine)); let result = invoke_tool(&gateway, "batch", Some(args), None).await; diff --git a/tasks/adapters/review-002-mcp-batch-cap.md b/tasks/adapters/review-002-mcp-batch-cap.md index 4df4e01..78902c1 100644 --- a/tasks/adapters/review-002-mcp-batch-cap.md +++ b/tasks/adapters/review-002-mcp-batch-cap.md @@ -1,7 +1,7 @@ --- id: review-002-mcp-batch-cap name: Cap MCP batch tool at MAX_BATCH_OPERATIONS (PRJ-22) -status: pending +status: completed depends_on: [] scope: single risk: low @@ -43,4 +43,8 @@ doc (PRJ-09's fix) advertises no limit either. One of the smallest tasks in the batch — a good first warm-up slice or fold-in candidate if a session runs short (but keep the commit -separate; it is its own unit of work). \ No newline at end of file +separate; it is its own unit of work). + +## Summary + +MAX_BATCH_OPERATIONS hoisted to gateway/mod.rs (shared by routes/to_mcp/to_openapi); MCP batch rejects >100 calls pre-dispatch with INVALID_INPUT; schema maxItems + tool description updated. GatewayDispatch::invoke_count() test-spy accessor added. diff --git a/tasks/adapters/review-002-projection-truthfulness.md b/tasks/adapters/review-002-projection-truthfulness.md index bcc3b18..9badbee 100644 --- a/tasks/adapters/review-002-projection-truthfulness.md +++ b/tasks/adapters/review-002-projection-truthfulness.md @@ -1,7 +1,7 @@ --- id: review-002-projection-truthfulness name: Projection doc truthfulness — dangling CallError ref, status clobber/drifts, OAS-invalid extension (PRJ-16b/17/18/19/20/21/23/24) -status: pending +status: completed depends_on: [] scope: moderate risk: low @@ -85,4 +85,8 @@ PRJ-16b and PRJ-23 escaped). Consider one shared `golden_doc_with_ops()` fixture replacing per-test registry setup. ADR-045's version bump: these are doc-contract corrections — bump `info.version` per ADR-045's tracking rule (gateway endpoint contract -itself unchanged). \ No newline at end of file +itself unchanged). + +## Summary + +PRJ-16b BatchError component oneOf; PRJ-17 op-declared errors merge into protocol responses; PRJ-18 /publish 400 narrowed; PRJ-19 415/422 slots via shared builders; PRJ-20 /call 401 identity split; PRJ-21 unreachable /batch 500 removed; PRJ-23 invalid extension deleted; PRJ-24 dead search_filter removed. gateway-spec 1.2.0 -> 1.3.0 (minor per ADR-045). GW-15 413 context folded into 400-slot docs. diff --git a/tasks/adapters/review-002-yaml-normalization.md b/tasks/adapters/review-002-yaml-normalization.md index d8f05e1..e884606 100644 --- a/tasks/adapters/review-002-yaml-normalization.md +++ b/tasks/adapters/review-002-yaml-normalization.md @@ -1,7 +1,7 @@ --- id: review-002-yaml-normalization name: YAML input normalization — duplicates, .inf, merge keys, non-string keys (OAI-12) -status: pending +status: completed depends_on: [] scope: narrow risk: medium @@ -66,4 +66,8 @@ Keep the walk cheap (one pass, no allocation beyond error messages). The alias-bomb/depth bounds are dependency-provided and verified working (review 002 re-verified) — do not re-implement them; the task is about *semantic* normalization, not resource limits. ADR-051 is the -decision record to update if the merge-key stance changes behavior. \ No newline at end of file +decision record to update if the merge-key stance changes behavior. + +## Summary + +Post-parse YAML normalization at the from_yaml seam: loud duplicate-key rejection (yaml_serde native), merge keys applied (shallow), .inf/.nan + non-representable keys rejected with pointers, scalar keys stringified per YAML 1.2 core schema. Premise correction recorded: serde_json Value itself last-wins on dups - parity contract is YAML-stricter-by-design. ADR-051 section added. diff --git a/tasks/infra/review-002-cov13-dead-code.md b/tasks/infra/review-002-cov13-dead-code.md index 80b5d45..4e4b438 100644 --- a/tasks/infra/review-002-cov13-dead-code.md +++ b/tasks/infra/review-002-cov13-dead-code.md @@ -1,7 +1,7 @@ --- id: review-002-cov13-dead-code name: Delete dead accessors and FromRef impls — resolve_bearer wire-or-delete decision (COV-13) -status: pending +status: completed depends_on: [] scope: single risk: low @@ -52,4 +52,8 @@ Small, zero-risk deletion sweep. Good pairing with any other session's warm-up. If the `resolve_bearer` hook-decision feels non-obvious (needs an ADR or design note), default to delete — dead code with an aspirational doc claim is worse than no hook; a real hook can be added -when a concrete assembly-layer need exists. \ No newline at end of file +when a concrete assembly-layer need exists. + +## Summary + +Merge note: resolved alongside mcp-batch-cap (invoke_count accessor kept, identity_provider/resolve_bearer deleted single-arg constructor).